@dhis2-ui/button 9.3.0-alpha.2 → 9.4.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -31,6 +31,17 @@ describe('<Button>', () => {
31
31
  });
32
32
  expect(actual.length).toBe(1);
33
33
  });
34
+ it('has the accessibility attributes', () => {
35
+ const dataTest = 'button-data-test';
36
+ const wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react2.default.createElement(_button.Button, {
37
+ dataTest: dataTest,
38
+ ariaLabel: "test aria label",
39
+ title: "title for button"
40
+ }));
41
+ const buttonElement = wrapper.find('button').getDOMNode();
42
+ expect(buttonElement).toHaveAttribute('title', 'title for button');
43
+ expect(buttonElement).toHaveAttribute('ariaLabel', 'test aria label');
44
+ });
34
45
  describe('toggle', () => {
35
46
  it('should have class "toggled" if toggled-prop is true', () => {
36
47
  const wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react2.default.createElement(_button.Button, {
@@ -25,6 +25,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
25
25
 
26
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
27
 
28
+ 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); }
29
+
28
30
  const Button = _ref => {
29
31
  let {
30
32
  children,
@@ -47,7 +49,8 @@ const Button = _ref => {
47
49
  onClick,
48
50
  onFocus,
49
51
  onKeyDown,
50
- loading
52
+ loading,
53
+ ...otherProps
51
54
  } = _ref;
52
55
  const ref = (0, _react.useRef)();
53
56
  (0, _react.useEffect)(() => {
@@ -87,7 +90,7 @@ const Button = _ref => {
87
90
  toggled,
88
91
  loading: loading
89
92
  });
90
- return /*#__PURE__*/_react.default.createElement("button", {
93
+ return /*#__PURE__*/_react.default.createElement("button", _extends({
91
94
  ref: ref,
92
95
  name: name,
93
96
  "data-test": dataTest,
@@ -97,9 +100,10 @@ const Button = _ref => {
97
100
  onBlur: handleBlur,
98
101
  onClick: handleClick,
99
102
  onFocus: handleFocus,
100
- onKeyDown: handleKeyDown,
101
- className: "jsx-".concat(_buttonStyles.default.__hash) + " " + (buttonClassName || "")
102
- }, loading && /*#__PURE__*/_react.default.createElement("span", {
103
+ onKeyDown: handleKeyDown
104
+ }, otherProps, {
105
+ className: "jsx-".concat(_buttonStyles.default.__hash) + " " + (otherProps && otherProps.className != null && otherProps.className || buttonClassName || "")
106
+ }), loading && /*#__PURE__*/_react.default.createElement("span", {
103
107
  className: "jsx-".concat(_buttonStyles.default.__hash) + " " + "loader"
104
108
  }, destructive || primary ? /*#__PURE__*/_react.default.createElement(_loader.CircularLoader, {
105
109
  extrasmall: true,
@@ -44,7 +44,9 @@ var _default = {
44
44
  args: {
45
45
  children: 'Label me!',
46
46
  value: 'default',
47
- onClick: logger
47
+ onClick: logger,
48
+ title: 'Button',
49
+ ariaLabel: 'Button'
48
50
  },
49
51
  argTypes: {
50
52
  primary: { ...buttonVariantArgType
@@ -255,7 +257,9 @@ exports.IconOnly = IconOnly;
255
257
  IconOnly.args = {
256
258
  icon: DemoIcon24,
257
259
  name: 'Icon only button',
258
- children: null
260
+ children: null,
261
+ title: 'Icon Button',
262
+ ariaLabel: 'Icon Button'
259
263
  };
260
264
  const IconSmall = Template.bind({});
261
265
  exports.IconSmall = IconSmall;
@@ -23,6 +23,17 @@ describe('<Button>', () => {
23
23
  });
24
24
  expect(actual.length).toBe(1);
25
25
  });
26
+ it('has the accessibility attributes', () => {
27
+ const dataTest = 'button-data-test';
28
+ const wrapper = mount( /*#__PURE__*/React.createElement(Button, {
29
+ dataTest: dataTest,
30
+ ariaLabel: "test aria label",
31
+ title: "title for button"
32
+ }));
33
+ const buttonElement = wrapper.find('button').getDOMNode();
34
+ expect(buttonElement).toHaveAttribute('title', 'title for button');
35
+ expect(buttonElement).toHaveAttribute('ariaLabel', 'test aria label');
36
+ });
26
37
  describe('toggle', () => {
27
38
  it('should have class "toggled" if toggled-prop is true', () => {
28
39
  const wrapper = mount( /*#__PURE__*/React.createElement(Button, {
@@ -1,4 +1,7 @@
1
1
  import _JSXStyle from "styled-jsx/style";
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
+
2
5
  import { CircularLoader } from '@dhis2-ui/loader';
3
6
  import { sharedPropTypes } from '@dhis2/ui-constants';
4
7
  import cx from 'classnames';
@@ -27,7 +30,8 @@ export const Button = _ref => {
27
30
  onClick,
28
31
  onFocus,
29
32
  onKeyDown,
30
- loading
33
+ loading,
34
+ ...otherProps
31
35
  } = _ref;
32
36
  const ref = useRef();
33
37
  useEffect(() => {
@@ -67,7 +71,7 @@ export const Button = _ref => {
67
71
  toggled,
68
72
  loading: loading
69
73
  });
70
- return /*#__PURE__*/React.createElement("button", {
74
+ return /*#__PURE__*/React.createElement("button", _extends({
71
75
  ref: ref,
72
76
  name: name,
73
77
  "data-test": dataTest,
@@ -77,9 +81,10 @@ export const Button = _ref => {
77
81
  onBlur: handleBlur,
78
82
  onClick: handleClick,
79
83
  onFocus: handleFocus,
80
- onKeyDown: handleKeyDown,
81
- className: "jsx-".concat(styles.__hash) + " " + (buttonClassName || "")
82
- }, loading && /*#__PURE__*/React.createElement("span", {
84
+ onKeyDown: handleKeyDown
85
+ }, otherProps, {
86
+ className: "jsx-".concat(styles.__hash) + " " + (otherProps && otherProps.className != null && otherProps.className || buttonClassName || "")
87
+ }), loading && /*#__PURE__*/React.createElement("span", {
83
88
  className: "jsx-".concat(styles.__hash) + " " + "loader"
84
89
  }, destructive || primary ? /*#__PURE__*/React.createElement(CircularLoader, {
85
90
  extrasmall: true,
@@ -32,7 +32,9 @@ export default {
32
32
  args: {
33
33
  children: 'Label me!',
34
34
  value: 'default',
35
- onClick: logger
35
+ onClick: logger,
36
+ title: 'Button',
37
+ ariaLabel: 'Button'
36
38
  },
37
39
  argTypes: {
38
40
  primary: { ...buttonVariantArgType
@@ -222,7 +224,9 @@ export const IconOnly = Template.bind({});
222
224
  IconOnly.args = {
223
225
  icon: DemoIcon24,
224
226
  name: 'Icon only button',
225
- children: null
227
+ children: null,
228
+ title: 'Icon Button',
229
+ ariaLabel: 'Icon Button'
226
230
  };
227
231
  export const IconSmall = Template.bind({});
228
232
  IconSmall.args = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dhis2-ui/button",
3
- "version": "9.3.0-alpha.2",
3
+ "version": "9.4.0-alpha.1",
4
4
  "description": "UI Button",
5
5
  "repository": {
6
6
  "type": "git",
@@ -33,11 +33,11 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@dhis2/prop-types": "^3.1.2",
36
- "@dhis2-ui/layer": "9.3.0-alpha.2",
37
- "@dhis2-ui/loader": "9.3.0-alpha.2",
38
- "@dhis2-ui/popper": "9.3.0-alpha.2",
39
- "@dhis2/ui-constants": "9.3.0-alpha.2",
40
- "@dhis2/ui-icons": "9.3.0-alpha.2",
36
+ "@dhis2-ui/layer": "9.4.0-alpha.1",
37
+ "@dhis2-ui/loader": "9.4.0-alpha.1",
38
+ "@dhis2-ui/popper": "9.4.0-alpha.1",
39
+ "@dhis2/ui-constants": "9.4.0-alpha.1",
40
+ "@dhis2/ui-icons": "9.4.0-alpha.1",
41
41
  "classnames": "^2.3.1",
42
42
  "prop-types": "^15.7.2"
43
43
  },
package/types/index.d.ts CHANGED
@@ -16,7 +16,7 @@ type ButtonOpenEventHandler<
16
16
  Event extends React.SyntheticEvent = React.MouseEvent<HTMLButtonElement>
17
17
  > = (arg0: ButtonEventPayload & { open: boolean }, event: Event) => void
18
18
 
19
- export interface ButtonProps {
19
+ export interface ButtonProps extends HTMLButtonElement {
20
20
  /**
21
21
  * Component to render inside the button
22
22
  */