@sb1/ffe-buttons-react 14.0.0 → 14.0.4

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 (52) hide show
  1. package/es/ActionButton.js +63 -0
  2. package/es/ActionButton.spec.js +31 -0
  3. package/es/BackButton.js +28 -0
  4. package/es/BackButton.spec.js +25 -0
  5. package/es/BaseButton.js +96 -0
  6. package/es/BaseButton.spec.js +91 -0
  7. package/es/ButtonGroup.js +38 -0
  8. package/es/ButtonGroup.spec.js +43 -0
  9. package/es/ExpandButton.js +75 -0
  10. package/es/ExpandButton.spec.js +87 -0
  11. package/es/InlineBaseButton.js +69 -0
  12. package/es/InlineBaseButton.spec.js +59 -0
  13. package/es/InlineExpandButton.js +45 -0
  14. package/es/InlineExpandButton.spec.js +50 -0
  15. package/es/PrimaryButton.js +46 -0
  16. package/es/PrimaryButton.spec.js +25 -0
  17. package/es/SecondaryButton.js +46 -0
  18. package/es/SecondaryButton.spec.js +25 -0
  19. package/es/ShortcutButton.js +39 -0
  20. package/es/ShortcutButton.spec.js +30 -0
  21. package/es/TaskButton.js +47 -0
  22. package/es/TaskButton.spec.js +33 -0
  23. package/es/TertiaryButton.js +34 -0
  24. package/es/TertiaryButton.spec.js +25 -0
  25. package/es/index.js +10 -0
  26. package/lib/ActionButton.js +77 -0
  27. package/lib/ActionButton.spec.js +38 -0
  28. package/lib/BackButton.js +40 -0
  29. package/lib/BackButton.spec.js +32 -0
  30. package/lib/BaseButton.js +108 -0
  31. package/lib/BaseButton.spec.js +98 -0
  32. package/lib/ButtonGroup.js +50 -0
  33. package/lib/ButtonGroup.spec.js +50 -0
  34. package/lib/ExpandButton.js +94 -0
  35. package/lib/ExpandButton.spec.js +97 -0
  36. package/lib/InlineBaseButton.js +81 -0
  37. package/lib/InlineBaseButton.spec.js +66 -0
  38. package/lib/InlineExpandButton.js +58 -0
  39. package/lib/InlineExpandButton.spec.js +58 -0
  40. package/lib/PrimaryButton.js +58 -0
  41. package/lib/PrimaryButton.spec.js +32 -0
  42. package/lib/SecondaryButton.js +58 -0
  43. package/lib/SecondaryButton.spec.js +32 -0
  44. package/lib/ShortcutButton.js +52 -0
  45. package/lib/ShortcutButton.spec.js +38 -0
  46. package/lib/TaskButton.js +59 -0
  47. package/lib/TaskButton.spec.js +41 -0
  48. package/lib/TertiaryButton.js +46 -0
  49. package/lib/TertiaryButton.spec.js +32 -0
  50. package/lib/index.js +87 -0
  51. package/package.json +2 -2
  52. package/types/index.d.ts +104 -0
@@ -0,0 +1,59 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React from 'react';
4
+ import { shallow } from 'enzyme';
5
+ import InlineBaseButton from './InlineBaseButton';
6
+ var defaultProps = {
7
+ children: 'Click me'
8
+ };
9
+
10
+ var getWrapper = function getWrapper(props) {
11
+ return shallow( /*#__PURE__*/React.createElement(InlineBaseButton, _extends({}, defaultProps, props)));
12
+ };
13
+
14
+ describe('<InlineBaseButton />', function () {
15
+ it('renders without exploding', function () {
16
+ var wrapper = getWrapper();
17
+ expect(wrapper.exists()).toBe(true);
18
+ });
19
+ it('renders the correct classes', function () {
20
+ var wrapper = getWrapper();
21
+ expect(wrapper.hasClass('ffe-inline-button')).toBe(true);
22
+ wrapper.setProps({
23
+ className: 'custom-class',
24
+ buttonType: 'tertiary'
25
+ });
26
+ expect(wrapper.hasClass('ffe-inline-button--tertiary')).toBe(true);
27
+ expect(wrapper.hasClass('custom-class')).toBe(true);
28
+ });
29
+ it('renders the correct label', function () {
30
+ var wrapper = getWrapper();
31
+ expect(wrapper.text()).toBe('Click me');
32
+ wrapper.setProps({
33
+ children: 'Press me'
34
+ });
35
+ expect(wrapper.text()).toBe('Press me');
36
+ });
37
+ it('renders left icon if set', function () {
38
+ var wrapper = getWrapper();
39
+ expect(wrapper.find('.ffe-inline-button__icon--left').exists()).toBe(false);
40
+ wrapper.setProps({
41
+ leftIcon: /*#__PURE__*/React.createElement("svg", null)
42
+ });
43
+ expect(wrapper.find('.ffe-inline-button__icon--left').exists()).toBe(true);
44
+ });
45
+ it('renders right icon if set', function () {
46
+ var wrapper = getWrapper();
47
+ expect(wrapper.find('.ffe-inline-button__icon--right').exists()).toBe(false);
48
+ wrapper.setProps({
49
+ rightIcon: /*#__PURE__*/React.createElement("svg", null)
50
+ });
51
+ expect(wrapper.find('.ffe-inline-button__icon--right').exists()).toBe(true);
52
+ });
53
+ it('renders the specified dom node', function () {
54
+ var wrapper = getWrapper({
55
+ element: 'a'
56
+ });
57
+ expect(wrapper.is('a')).toBe(true);
58
+ });
59
+ });
@@ -0,0 +1,45 @@
1
+ var _excluded = ["isExpanded"];
2
+
3
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
+
5
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
6
+
7
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
8
+
9
+ import React from 'react';
10
+ import { bool, func, node, oneOfType, object, shape } from 'prop-types';
11
+ import ChevronIkon from '@sb1/ffe-icons-react/lib/chevron-ikon';
12
+ import InlineButton from './InlineBaseButton';
13
+
14
+ var InlineExpandButton = function InlineExpandButton(props) {
15
+ var isExpanded = props.isExpanded,
16
+ rest = _objectWithoutProperties(props, _excluded);
17
+
18
+ return /*#__PURE__*/React.createElement(InlineButton, _extends({
19
+ buttonType: "expand",
20
+ type: "button",
21
+ rightIcon: /*#__PURE__*/React.createElement(ChevronIkon, {
22
+ style: {
23
+ marginLeft: '8px',
24
+ transform: isExpanded ? 'rotateZ(180deg)' : 'none'
25
+ }
26
+ })
27
+ }, rest));
28
+ };
29
+
30
+ InlineExpandButton.propTypes = {
31
+ /** Text that should reflect the isExpanded state. */
32
+ children: node,
33
+
34
+ /** Ref-setting function, or ref created by useRef, passed to the button element */
35
+ innerRef: oneOfType([func, shape({
36
+ current: object
37
+ })]),
38
+
39
+ /** When true it will indicate the button is in its open state */
40
+ isExpanded: bool.isRequired,
41
+
42
+ /** Listen for clicks to toggle the isExpanded state. */
43
+ onClick: func.isRequired
44
+ };
45
+ export default InlineExpandButton;
@@ -0,0 +1,50 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React from 'react';
4
+ import { shallow } from 'enzyme';
5
+ import ChevronIkon from '@sb1/ffe-icons-react/lib/chevron-ikon';
6
+ import InlineExpandButton from './InlineExpandButton';
7
+ var defaultProps = {
8
+ children: 'Click me',
9
+ isExpanded: false,
10
+ onClick: function onClick(f) {
11
+ return f;
12
+ }
13
+ };
14
+
15
+ var getWrapper = function getWrapper(props) {
16
+ return shallow( /*#__PURE__*/React.createElement(InlineExpandButton, _extends({}, defaultProps, props)));
17
+ };
18
+
19
+ describe('<InlineExpandButton />', function () {
20
+ it('renders without exploding', function () {
21
+ var wrapper = getWrapper();
22
+ expect(wrapper.props()).toHaveProperty('buttonType', 'expand');
23
+ });
24
+ it('passes on any prop', function () {
25
+ var wrapper = getWrapper({
26
+ 'aria-label': 'some label'
27
+ });
28
+ expect(wrapper.props()).toHaveProperty('aria-label', 'some label');
29
+ });
30
+ it('sends a <ChevronIcon /> as a default rightIcon prop', function () {
31
+ var wrapper = getWrapper();
32
+ expect(wrapper.props()).toHaveProperty('rightIcon', /*#__PURE__*/React.createElement(ChevronIkon, {
33
+ style: {
34
+ marginLeft: '8px',
35
+ transform: 'none'
36
+ }
37
+ }));
38
+ });
39
+ it('sends an upside down <ChevronIcon /> as rightIcon if isExpanded prop is true', function () {
40
+ var wrapper = getWrapper({
41
+ isExpanded: true
42
+ });
43
+ expect(wrapper.props()).toHaveProperty('rightIcon', /*#__PURE__*/React.createElement(ChevronIkon, {
44
+ style: {
45
+ marginLeft: '8px',
46
+ transform: 'rotateZ(180deg)'
47
+ }
48
+ }));
49
+ });
50
+ });
@@ -0,0 +1,46 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React from 'react';
4
+ import { bool, func, oneOfType, node, string, object, shape, elementType } from 'prop-types';
5
+ import Button from './BaseButton';
6
+
7
+ var PrimaryButton = function PrimaryButton(props) {
8
+ return /*#__PURE__*/React.createElement(Button, _extends({
9
+ buttonType: "primary"
10
+ }, props));
11
+ };
12
+
13
+ PrimaryButton.propTypes = {
14
+ /** Aria label for loading indicator */
15
+ ariaLoadingMessage: string,
16
+
17
+ /** The button label */
18
+ children: node,
19
+
20
+ /** Extra class names */
21
+ className: string,
22
+
23
+ /** Condensed modifier. Use in condensed designs */
24
+ condensed: bool,
25
+
26
+ /** Disable a button in certain situations */
27
+ disabled: bool,
28
+
29
+ /** The rendered element, like an `<a />` or `<Link />` */
30
+ element: oneOfType([func, string, elementType]),
31
+
32
+ /** Ref-setting function, or ref created by useRef, passed to the button element */
33
+ innerRef: oneOfType([func, shape({
34
+ current: object
35
+ })]),
36
+
37
+ /** Shows a loader if true */
38
+ isLoading: bool,
39
+
40
+ /** Icon shown to the left of the label */
41
+ leftIcon: node,
42
+
43
+ /** Icon shown to the right of the label */
44
+ rightIcon: node
45
+ };
46
+ export default PrimaryButton;
@@ -0,0 +1,25 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React from 'react';
4
+ import { shallow } from 'enzyme';
5
+ import PrimaryButton from './PrimaryButton';
6
+ var defaultProps = {
7
+ children: 'Click me'
8
+ };
9
+
10
+ var getWrapper = function getWrapper(props) {
11
+ return shallow( /*#__PURE__*/React.createElement(PrimaryButton, _extends({}, defaultProps, props)));
12
+ };
13
+
14
+ describe('<PrimaryButton />', function () {
15
+ it('renders without exploding', function () {
16
+ var wrapper = getWrapper();
17
+ expect(wrapper.props()).toHaveProperty('buttonType', 'primary');
18
+ });
19
+ it('passes on any prop', function () {
20
+ var wrapper = getWrapper({
21
+ 'aria-label': 'some label'
22
+ });
23
+ expect(wrapper.props()).toHaveProperty('aria-label', 'some label');
24
+ });
25
+ });
@@ -0,0 +1,46 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React from 'react';
4
+ import { bool, func, oneOfType, string, node, object, shape, elementType } from 'prop-types';
5
+ import Button from './BaseButton';
6
+
7
+ var SecondaryButton = function SecondaryButton(props) {
8
+ return /*#__PURE__*/React.createElement(Button, _extends({
9
+ buttonType: "secondary"
10
+ }, props));
11
+ };
12
+
13
+ SecondaryButton.propTypes = {
14
+ /** Aria label for loading indicator */
15
+ ariaLoadingMessage: string,
16
+
17
+ /** The button label */
18
+ children: node,
19
+
20
+ /** Extra class names */
21
+ className: string,
22
+
23
+ /** Condensed modifier. Use in condensed designs */
24
+ condensed: bool,
25
+
26
+ /** Disable a button in certain situations */
27
+ disabled: bool,
28
+
29
+ /** The rendered element, like an `<a />` or `<Link />` */
30
+ element: oneOfType([func, string, elementType]),
31
+
32
+ /** Ref-setting function, or ref created by useRef, passed to the button element */
33
+ innerRef: oneOfType([func, shape({
34
+ current: object
35
+ })]),
36
+
37
+ /** Shows a loader if true */
38
+ isLoading: bool,
39
+
40
+ /** Icon shown to the left of the label */
41
+ leftIcon: node,
42
+
43
+ /** Icon shown to the right of the label */
44
+ rightIcon: node
45
+ };
46
+ export default SecondaryButton;
@@ -0,0 +1,25 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React from 'react';
4
+ import { shallow } from 'enzyme';
5
+ import SecondaryButton from './SecondaryButton';
6
+ var defaultProps = {
7
+ children: 'Click me'
8
+ };
9
+
10
+ var getWrapper = function getWrapper(props) {
11
+ return shallow( /*#__PURE__*/React.createElement(SecondaryButton, _extends({}, defaultProps, props)));
12
+ };
13
+
14
+ describe('<SecondaryButton />', function () {
15
+ it('renders without exploding', function () {
16
+ var wrapper = getWrapper();
17
+ expect(wrapper.props()).toHaveProperty('buttonType', 'secondary');
18
+ });
19
+ it('passes on any prop', function () {
20
+ var wrapper = getWrapper({
21
+ 'aria-label': 'some label'
22
+ });
23
+ expect(wrapper.props()).toHaveProperty('aria-label', 'some label');
24
+ });
25
+ });
@@ -0,0 +1,39 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React from 'react';
4
+ import { bool, func, node, string, oneOfType, object, shape, elementType } from 'prop-types';
5
+ import ChevronIkon from '@sb1/ffe-icons-react/lib/chevron-ikon';
6
+ import Button from './BaseButton';
7
+
8
+ var ShortcutButton = function ShortcutButton(props) {
9
+ return /*#__PURE__*/React.createElement(Button, _extends({
10
+ buttonType: "shortcut",
11
+ rightIcon: /*#__PURE__*/React.createElement(ChevronIkon, null)
12
+ }, props));
13
+ };
14
+
15
+ ShortcutButton.propTypes = {
16
+ /** The button label */
17
+ children: node,
18
+
19
+ /** Extra class names */
20
+ className: string,
21
+
22
+ /** Condensed modifier. Use in condensed designs */
23
+ condensed: bool,
24
+
25
+ /** Disable a button in certain situations */
26
+ disabled: bool,
27
+
28
+ /** The rendered element, like an `<a />` or `<Link />` */
29
+ element: oneOfType([func, string, elementType]),
30
+
31
+ /** Ref-setting function, or ref created by useRef, passed to the button element */
32
+ innerRef: oneOfType([func, shape({
33
+ current: object
34
+ })]),
35
+
36
+ /** Icon shown to the left of the label */
37
+ leftIcon: node
38
+ };
39
+ export default ShortcutButton;
@@ -0,0 +1,30 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React from 'react';
4
+ import { shallow } from 'enzyme';
5
+ import ChevronIkon from '@sb1/ffe-icons-react/lib/chevron-ikon';
6
+ import ShortcutButton from './ShortcutButton';
7
+ var defaultProps = {
8
+ children: 'Click me'
9
+ };
10
+
11
+ var getWrapper = function getWrapper(props) {
12
+ return shallow( /*#__PURE__*/React.createElement(ShortcutButton, _extends({}, defaultProps, props)));
13
+ };
14
+
15
+ describe('<ShortcutButton />', function () {
16
+ it('renders without exploding', function () {
17
+ var wrapper = getWrapper();
18
+ expect(wrapper.props()).toHaveProperty('buttonType', 'shortcut');
19
+ });
20
+ it('passes on any prop', function () {
21
+ var wrapper = getWrapper({
22
+ 'aria-label': 'some label'
23
+ });
24
+ expect(wrapper.props()).toHaveProperty('aria-label', 'some label');
25
+ });
26
+ it('sends a <ChevronIcon /> as a default rightIcon prop', function () {
27
+ var wrapper = getWrapper();
28
+ expect(wrapper.props()).toHaveProperty('rightIcon', /*#__PURE__*/React.createElement(ChevronIkon, null));
29
+ });
30
+ });
@@ -0,0 +1,47 @@
1
+ var _excluded = ["icon"];
2
+
3
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
+
5
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
6
+
7
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
8
+
9
+ import React from 'react';
10
+ import { bool, func, node, string, oneOfType, object, shape, elementType } from 'prop-types';
11
+ import Button from './BaseButton';
12
+
13
+ var TaskButton = function TaskButton(_ref) {
14
+ var icon = _ref.icon,
15
+ rest = _objectWithoutProperties(_ref, _excluded);
16
+
17
+ return /*#__PURE__*/React.createElement(Button, _extends({
18
+ buttonType: "task",
19
+ leftIcon: icon
20
+ }, rest));
21
+ };
22
+
23
+ TaskButton.propTypes = {
24
+ /** The button label */
25
+ children: node,
26
+
27
+ /** Extra class names */
28
+ className: string,
29
+
30
+ /** Condensed modifier. Use in condensed designs */
31
+ condensed: bool,
32
+
33
+ /** Disable a button in certain situations */
34
+ disabled: bool,
35
+
36
+ /** The rendered element, like an `<a />` or `<Link />` */
37
+ element: oneOfType([func, string, elementType]),
38
+
39
+ /** Task icon, show to the left of the label */
40
+ icon: node.isRequired,
41
+
42
+ /** Ref-setting function, or ref created by useRef, passed to the button element */
43
+ innerRef: oneOfType([func, shape({
44
+ current: object
45
+ })])
46
+ };
47
+ export default TaskButton;
@@ -0,0 +1,33 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React from 'react';
4
+ import { shallow } from 'enzyme';
5
+ import ChevronIkon from '@sb1/ffe-icons-react/lib/chevron-ikon';
6
+ import TaskButton from './TaskButton';
7
+ var defaultProps = {
8
+ children: 'Click me',
9
+ icon: /*#__PURE__*/React.createElement("svg", null)
10
+ };
11
+
12
+ var getWrapper = function getWrapper(props) {
13
+ return shallow( /*#__PURE__*/React.createElement(TaskButton, _extends({}, defaultProps, props)));
14
+ };
15
+
16
+ describe('<TaskButton />', function () {
17
+ it('renders without exploding', function () {
18
+ var wrapper = getWrapper();
19
+ expect(wrapper.props()).toHaveProperty('buttonType', 'task');
20
+ });
21
+ it('passes on any prop', function () {
22
+ var wrapper = getWrapper({
23
+ 'aria-label': 'some label'
24
+ });
25
+ expect(wrapper.props()).toHaveProperty('aria-label', 'some label');
26
+ });
27
+ it('sends icon prop on as leftIcon prop', function () {
28
+ var wrapper = getWrapper({
29
+ icon: /*#__PURE__*/React.createElement(ChevronIkon, null)
30
+ });
31
+ expect(wrapper.props()).toHaveProperty('leftIcon', /*#__PURE__*/React.createElement(ChevronIkon, null));
32
+ });
33
+ });
@@ -0,0 +1,34 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React from 'react';
4
+ import { func, node, oneOfType, string, object, shape, elementType } from 'prop-types';
5
+ import InlineButton from './InlineBaseButton';
6
+
7
+ var TertiaryButton = function TertiaryButton(props) {
8
+ return /*#__PURE__*/React.createElement(InlineButton, _extends({
9
+ buttonType: "tertiary"
10
+ }, props));
11
+ };
12
+
13
+ TertiaryButton.propTypes = {
14
+ /** The button label */
15
+ children: node,
16
+
17
+ /** Extra class names */
18
+ className: string,
19
+
20
+ /** The rendered element, like an `<a />` or `<Link />` */
21
+ element: oneOfType([func, string, elementType]),
22
+
23
+ /** Ref-setting function, or ref created by useRef, passed to the button element */
24
+ innerRef: oneOfType([func, shape({
25
+ current: object
26
+ })]),
27
+
28
+ /** Icon shown to the left of the label */
29
+ leftIcon: node,
30
+
31
+ /** Icon shown to the right of the label */
32
+ rightIcon: node
33
+ };
34
+ export default TertiaryButton;
@@ -0,0 +1,25 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React from 'react';
4
+ import { shallow } from 'enzyme';
5
+ import TertiaryButton from './TertiaryButton';
6
+ var defaultProps = {
7
+ children: 'Click me'
8
+ };
9
+
10
+ var getWrapper = function getWrapper(props) {
11
+ return shallow( /*#__PURE__*/React.createElement(TertiaryButton, _extends({}, defaultProps, props)));
12
+ };
13
+
14
+ describe('TertiaryButton', function () {
15
+ it('renders without exploding', function () {
16
+ var wrapper = getWrapper();
17
+ expect(wrapper.props()).toHaveProperty('buttonType', 'tertiary');
18
+ });
19
+ it('passes on any prop', function () {
20
+ var wrapper = getWrapper({
21
+ 'aria-label': 'some label'
22
+ });
23
+ expect(wrapper.props()).toHaveProperty('aria-label', 'some label');
24
+ });
25
+ });
package/es/index.js ADDED
@@ -0,0 +1,10 @@
1
+ export { default as ActionButton } from './ActionButton';
2
+ export { default as BackButton } from './BackButton';
3
+ export { default as ButtonGroup } from './ButtonGroup';
4
+ export { default as ExpandButton } from './ExpandButton';
5
+ export { default as InlineExpandButton } from './InlineExpandButton';
6
+ export { default as PrimaryButton } from './PrimaryButton';
7
+ export { default as SecondaryButton } from './SecondaryButton';
8
+ export { default as ShortcutButton } from './ShortcutButton';
9
+ export { default as TaskButton } from './TaskButton';
10
+ export { default as TertiaryButton } from './TertiaryButton';
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = ActionButton;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = require("prop-types");
11
+
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+
14
+ var _BaseButton = _interopRequireDefault(require("./BaseButton"));
15
+
16
+ var _excluded = ["className", "ghost"];
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
21
+
22
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
23
+
24
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
25
+
26
+ function ActionButton(props) {
27
+ var className = props.className,
28
+ ghost = props.ghost,
29
+ rest = _objectWithoutProperties(props, _excluded);
30
+
31
+ return /*#__PURE__*/_react.default.createElement(_BaseButton.default, _extends({
32
+ buttonType: "action",
33
+ className: (0, _classnames.default)(className, {
34
+ 'ffe-button--ghost': ghost
35
+ })
36
+ }, rest));
37
+ }
38
+
39
+ ActionButton.propTypes = {
40
+ /** Aria label for loading indicator */
41
+ ariaLoadingMessage: _propTypes.string,
42
+
43
+ /** The button label */
44
+ children: _propTypes.node,
45
+
46
+ /** Extra class names */
47
+ className: _propTypes.string,
48
+
49
+ /** Condensed modifier. Use in condensed designs */
50
+ condensed: _propTypes.bool,
51
+
52
+ /** Disable a button in certain situations */
53
+ disabled: _propTypes.bool,
54
+
55
+ /** The rendered element, like an `<a />` or `<Link />` */
56
+ element: (0, _propTypes.oneOfType)([_propTypes.func, _propTypes.string, _propTypes.elementType]),
57
+
58
+ /** Applies the ghost modifier if true. */
59
+ ghost: _propTypes.bool,
60
+
61
+ /** Ref-setting function, or ref created by useRef, passed to the button element */
62
+ innerRef: (0, _propTypes.oneOfType)([_propTypes.func, (0, _propTypes.shape)({
63
+ current: _propTypes.object
64
+ })]),
65
+
66
+ /** Shows a loader if true */
67
+ isLoading: _propTypes.bool,
68
+
69
+ /** Icon shown to the left of the label */
70
+ leftIcon: _propTypes.node,
71
+
72
+ /** Icon shown to the right of the label */
73
+ rightIcon: _propTypes.node
74
+ };
75
+ ActionButton.defaultProps = {
76
+ ghost: false
77
+ };
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _react = _interopRequireDefault(require("react"));
4
+
5
+ var _enzyme = require("enzyme");
6
+
7
+ var _ActionButton = _interopRequireDefault(require("./ActionButton"));
8
+
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+
11
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
12
+
13
+ var defaultProps = {
14
+ children: 'Click me'
15
+ };
16
+
17
+ var getWrapper = function getWrapper(props) {
18
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react.default.createElement(_ActionButton.default, _extends({}, defaultProps, props)));
19
+ };
20
+
21
+ describe('<ActionButton />', function () {
22
+ it('renders without exploding', function () {
23
+ var wrapper = getWrapper();
24
+ expect(wrapper.props()).toHaveProperty('buttonType', 'action');
25
+ });
26
+ it('passes on any prop', function () {
27
+ var wrapper = getWrapper({
28
+ 'aria-label': 'some label'
29
+ });
30
+ expect(wrapper.props()).toHaveProperty('aria-label', 'some label');
31
+ });
32
+ it('sets correct class when ghost prop is true', function () {
33
+ var wrapper = getWrapper({
34
+ ghost: true
35
+ });
36
+ expect(wrapper.hasClass('ffe-button--ghost')).toBe(true);
37
+ });
38
+ });