@dhis2-ui/button 9.5.0-alpha.1 → 9.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. package/build/cjs/button/__tests__/Button.test.js +0 -31
  2. package/build/cjs/button/button.js +0 -8
  3. package/build/cjs/button/features/can_be_blurred/index.js +4 -4
  4. package/build/cjs/button/features/can_be_clicked/index.js +4 -4
  5. package/build/cjs/button/features/can_be_focused/index.js +4 -4
  6. package/build/cjs/button-strip/features/accepts_children/index.js +3 -3
  7. package/build/cjs/dropdown-button/__tests__/dropdown-button.test.js +65 -5
  8. package/build/cjs/dropdown-button/dropdown-button.js +21 -1
  9. package/build/cjs/dropdown-button/features/accepts_children/index.js +3 -3
  10. package/build/cjs/dropdown-button/features/accepts_component/index.js +3 -3
  11. package/build/cjs/dropdown-button/features/accepts_icon/index.js +3 -3
  12. package/build/cjs/dropdown-button/features/accepts_initial_focus/index.js +3 -3
  13. package/build/cjs/dropdown-button/features/button_is_clickable/index.js +3 -5
  14. package/build/cjs/dropdown-button/features/can_be_disabled/index.js +3 -8
  15. package/build/cjs/dropdown-button/features/common/index.js +2 -2
  16. package/build/cjs/dropdown-button/features/opens_a_dropdown/index.js +6 -8
  17. package/build/cjs/split-button/features/accepts_children/index.js +3 -3
  18. package/build/cjs/split-button/features/accepts_icon/index.js +5 -5
  19. package/build/cjs/split-button/features/accepts_initial_focus/index.js +3 -3
  20. package/build/cjs/split-button/features/arrow_opens_menu/index.js +9 -11
  21. package/build/cjs/split-button/features/button_is_clickable/index.js +3 -5
  22. package/build/cjs/split-button/features/can_be_disabled/index.js +6 -6
  23. package/build/cjs/split-button/features/common/index.js +3 -3
  24. package/build/cjs/split-button/split-button.js +4 -30
  25. package/build/es/button/__tests__/Button.test.js +0 -31
  26. package/build/es/button/button.js +0 -8
  27. package/build/es/button/features/can_be_blurred/index.js +1 -1
  28. package/build/es/button/features/can_be_clicked/index.js +1 -1
  29. package/build/es/button/features/can_be_focused/index.js +1 -1
  30. package/build/es/button-strip/features/accepts_children/index.js +1 -1
  31. package/build/es/dropdown-button/__tests__/dropdown-button.test.js +48 -0
  32. package/build/es/dropdown-button/dropdown-button.js +21 -1
  33. package/build/es/dropdown-button/features/accepts_children/index.js +1 -1
  34. package/build/es/dropdown-button/features/accepts_component/index.js +1 -1
  35. package/build/es/dropdown-button/features/accepts_icon/index.js +1 -1
  36. package/build/es/dropdown-button/features/accepts_initial_focus/index.js +1 -1
  37. package/build/es/dropdown-button/features/button_is_clickable/index.js +1 -2
  38. package/build/es/dropdown-button/features/can_be_disabled/index.js +1 -6
  39. package/build/es/dropdown-button/features/common/index.js +1 -1
  40. package/build/es/dropdown-button/features/opens_a_dropdown/index.js +1 -2
  41. package/build/es/split-button/features/accepts_children/index.js +1 -1
  42. package/build/es/split-button/features/accepts_icon/index.js +3 -3
  43. package/build/es/split-button/features/accepts_initial_focus/index.js +1 -1
  44. package/build/es/split-button/features/arrow_opens_menu/index.js +1 -2
  45. package/build/es/split-button/features/button_is_clickable/index.js +1 -2
  46. package/build/es/split-button/features/can_be_disabled/index.js +1 -1
  47. package/build/es/split-button/features/common/index.js +1 -1
  48. package/build/es/split-button/split-button.js +4 -29
  49. package/package.json +6 -6
  50. package/types/index.d.ts +4 -1
  51. package/build/cjs/locales/en/translations.json +0 -3
  52. package/build/cjs/locales/index.js +0 -27
  53. package/build/cjs/split-button/split-button.test.js +0 -99
  54. package/build/es/locales/en/translations.json +0 -3
  55. package/build/es/locales/index.js +0 -13
  56. package/build/es/split-button/split-button.test.js +0 -77
@@ -3,37 +3,6 @@ import { mount } from 'enzyme';
3
3
  import React from 'react';
4
4
  import { Button } from '../button.js';
5
5
  describe('<Button>', () => {
6
- let consoleSpy;
7
- beforeEach(() => {
8
- consoleSpy = jest.spyOn(console, 'debug').mockImplementation();
9
- });
10
- afterEach(() => {
11
- consoleSpy.mockRestore();
12
- });
13
- describe('warning for missing aria-label and title', () => {
14
- it('No warning if children exist but aria-label and title is missing', () => {
15
- render( /*#__PURE__*/React.createElement(Button, null, "Children content"));
16
- expect(consoleSpy).not.toHaveBeenCalled();
17
- });
18
- it('does not warn if aria-label and title is present', () => {
19
- render( /*#__PURE__*/React.createElement(Button, {
20
- "aria-label": "Test",
21
- title: "Test"
22
- }, "Children content"));
23
- expect(consoleSpy).not.toHaveBeenCalled();
24
- });
25
- it('warns if no children are present with no arial-label and title', () => {
26
- render( /*#__PURE__*/React.createElement(Button, null));
27
- expect(consoleSpy).toHaveBeenCalledWith('Button component has no children but is missing title and ariaLabel attribute.');
28
- });
29
- it('No warning if there are no children but arial label and title', () => {
30
- render( /*#__PURE__*/React.createElement(Button, {
31
- "aria-label": "Test",
32
- title: "Test"
33
- }));
34
- expect(consoleSpy).not.toHaveBeenCalled();
35
- });
36
- });
37
6
  it('renders a default data-test attribute', () => {
38
7
  const dataTest = 'dhis2-uicore-button';
39
8
  const wrapper = mount( /*#__PURE__*/React.createElement(Button, {
@@ -39,14 +39,6 @@ export const Button = _ref => {
39
39
  ref.current.focus();
40
40
  }
41
41
  }, [initialFocus, ref.current]);
42
- const {
43
- 'aria-label': ariaLabel,
44
- title
45
- } = otherProps;
46
-
47
- if (!children && !title && !ariaLabel) {
48
- console.debug('Button component has no children but is missing title and ariaLabel attribute.');
49
- }
50
42
 
51
43
  const handleClick = event => onClick && onClick({
52
44
  value,
@@ -1,4 +1,4 @@
1
- import { Given, When, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, When, Then } from '@badeball/cypress-cucumber-preprocessor';
2
2
  Given('an Button with initialFocus and onBlur handler is rendered', () => {
3
3
  cy.visitStory('Button', 'With initialFocus and onBlur');
4
4
  cy.focused().should('exist');
@@ -1,4 +1,4 @@
1
- import { Given, When, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, When, Then } from '@badeball/cypress-cucumber-preprocessor';
2
2
  Given('a Button with onClick handler is rendered', () => {
3
3
  cy.visitStory('Button', 'With onClick');
4
4
  });
@@ -1,4 +1,4 @@
1
- import { Given, When, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, When, Then } from '@badeball/cypress-cucumber-preprocessor';
2
2
  Given('a Button with onFocus handler is rendered', () => {
3
3
  cy.visitStory('Button', 'With onFocus');
4
4
  });
@@ -1,4 +1,4 @@
1
- import { Given, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, Then } from '@badeball/cypress-cucumber-preprocessor';
2
2
  Given('a ButtonStrip with children is rendered', () => {
3
3
  cy.visitStory('ButtonStrip', 'With children');
4
4
  cy.get('[data-test="dhis2-uicore-buttonstrip"]').should('be.visible');
@@ -1,8 +1,10 @@
1
1
  import { Layer } from '@dhis2-ui/layer';
2
2
  import { Popper } from '@dhis2-ui/popper';
3
+ import { render, fireEvent, waitFor } from '@testing-library/react';
3
4
  import { mount } from 'enzyme';
4
5
  import React from 'react';
5
6
  import { act } from 'react-dom/test-utils';
7
+ import { Modal } from '../../../../modal/src/modal/modal.js';
6
8
  import { Button } from '../../index.js';
7
9
  import { DropdownButton } from '../dropdown-button.js';
8
10
  describe('<DropdownButton>', () => {
@@ -34,6 +36,52 @@ describe('<DropdownButton>', () => {
34
36
  open: false
35
37
  }));
36
38
  });
39
+ it('closes dropdown when escape key is pressed', async () => {
40
+ const componentText = 'Dropdown Content';
41
+ const {
42
+ getByTestId,
43
+ queryByText
44
+ } = render( /*#__PURE__*/React.createElement(DropdownButton, {
45
+ component: componentText
46
+ }));
47
+ const toggleButton = getByTestId('dhis2-uicore-dropdownbutton-toggle');
48
+ fireEvent.click(toggleButton);
49
+ await waitFor(() => {
50
+ expect(queryByText(componentText)).toBeInTheDocument();
51
+ });
52
+ fireEvent.keyDown(document, {
53
+ key: 'Escape'
54
+ });
55
+ await waitFor(() => {
56
+ expect(queryByText(componentText)).not.toBeInTheDocument();
57
+ });
58
+ });
59
+ test('modal remains open when dropdown button is closed on escape click', async () => {
60
+ const dropdownButtonText = 'Dropdown Content';
61
+ const headingText = 'Heading Text';
62
+ const modalContent = /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h1", null, headingText), /*#__PURE__*/React.createElement(DropdownButton, {
63
+ component: dropdownButtonText
64
+ }));
65
+ const {
66
+ getByTestId,
67
+ queryByText
68
+ } = render( /*#__PURE__*/React.createElement(Modal, {
69
+ hide: false,
70
+ onClose: () => {}
71
+ }, modalContent));
72
+ const toggleButton = getByTestId('dhis2-uicore-dropdownbutton-toggle');
73
+ fireEvent.click(toggleButton);
74
+ await waitFor(() => {
75
+ expect(queryByText(dropdownButtonText)).toBeInTheDocument();
76
+ });
77
+ fireEvent.keyDown(document, {
78
+ key: 'Escape'
79
+ });
80
+ await waitFor(() => {
81
+ expect(queryByText(dropdownButtonText)).not.toBeInTheDocument();
82
+ expect(queryByText(headingText)).toBeInTheDocument();
83
+ });
84
+ });
37
85
  });
38
86
  describe('closed state', () => {
39
87
  const onClick = jest.fn();
@@ -67,6 +67,17 @@ class DropdownButton extends Component {
67
67
 
68
68
  _defineProperty(this, "anchorRef", /*#__PURE__*/React.createRef());
69
69
 
70
+ _defineProperty(this, "handleKeyDown", event => {
71
+ event.preventDefault();
72
+
73
+ if (event.key === 'Escape' && this.state.open) {
74
+ event.stopPropagation();
75
+ this.setState({
76
+ open: false
77
+ });
78
+ }
79
+ });
80
+
70
81
  _defineProperty(this, "onClickHandler", (_ref3, event) => {
71
82
  let {
72
83
  name,
@@ -95,6 +106,14 @@ class DropdownButton extends Component {
95
106
  });
96
107
  }
97
108
 
109
+ componentDidMount() {
110
+ document.addEventListener('keydown', this.handleKeyDown);
111
+ }
112
+
113
+ componentWillUnmount() {
114
+ document.removeEventListener('keydown', this.handleKeyDown);
115
+ }
116
+
98
117
  render() {
99
118
  const {
100
119
  component,
@@ -134,7 +153,8 @@ class DropdownButton extends Component {
134
153
  value: value,
135
154
  tabIndex: tabIndex,
136
155
  type: type,
137
- initialFocus: initialFocus
156
+ initialFocus: initialFocus,
157
+ "data-test": "dhis2-uicore-dropdownbutton-toggle"
138
158
  }, children, /*#__PURE__*/React.createElement(ArrowIconComponent, {
139
159
  className: "jsx-3163060161" + " " + (arrow.className || "")
140
160
  })), open && /*#__PURE__*/React.createElement(Layer, {
@@ -1,4 +1,4 @@
1
- import { Given, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, Then } from '@badeball/cypress-cucumber-preprocessor';
2
2
  Given('a DropdownButton with children is rendered', () => {
3
3
  cy.visitStory('DropdownButton', 'With children');
4
4
  cy.get('[data-test="dhis2-uicore-dropdownbutton"]').should('be.visible');
@@ -1,4 +1,4 @@
1
- import { Given, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, Then } from '@badeball/cypress-cucumber-preprocessor';
2
2
  Given('a DropdownButton with a component prop and opened dropdown is rendered', () => {
3
3
  cy.visitStory('DropdownButton', 'With component');
4
4
  cy.get('[data-test="dhis2-uicore-dropdownbutton"]').should('be.visible');
@@ -1,4 +1,4 @@
1
- import { Given, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, Then } from '@badeball/cypress-cucumber-preprocessor';
2
2
  Given('a DropdownButton with an icon prop is rendered', () => {
3
3
  cy.visitStory('DropdownButton', 'With icon');
4
4
  cy.get('[data-test="dhis2-uicore-dropdownbutton"]').should('be.visible');
@@ -1,4 +1,4 @@
1
- import { Given, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, Then } from '@badeball/cypress-cucumber-preprocessor';
2
2
  Given('a DropdownButton with initialFocus is rendered', () => {
3
3
  cy.visitStory('DropdownButton', 'With initialFocus');
4
4
  });
@@ -1,5 +1,4 @@
1
- import '../common/index.js';
2
- import { Given, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, Then } from '@badeball/cypress-cucumber-preprocessor';
3
2
  Given('a DropdownButton with onClick handler is rendered', () => {
4
3
  cy.visitStory('DropdownButton', 'With onClick');
5
4
  });
@@ -1,12 +1,7 @@
1
- import { Given, When, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, Then } from '@badeball/cypress-cucumber-preprocessor';
2
2
  Given('a disabled DropdownButton with onClick handler is rendered', () => {
3
3
  cy.visitStory('DropdownButton', 'Disabled with onClick');
4
4
  });
5
- When('the DropdownButton is clicked', () => {
6
- cy.get('[data-test="dhis2-uicore-dropdownbutton"] button').click({
7
- force: true
8
- });
9
- });
10
5
  Then('the onClick handler is not called', () => {
11
6
  cy.window().should(win => {
12
7
  expect(win.onClick).not.to.be.called;
@@ -1,4 +1,4 @@
1
- import { When } from 'cypress-cucumber-preprocessor/steps';
1
+ import { When } from '@badeball/cypress-cucumber-preprocessor';
2
2
  When('the DropdownButton is clicked', () => {
3
3
  cy.get('[data-test="dhis2-uicore-dropdownbutton"]').click();
4
4
  });
@@ -1,5 +1,4 @@
1
- import '../common/index.js';
2
- import { Given, When, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, When, Then } from '@badeball/cypress-cucumber-preprocessor';
3
2
  Given('a default DropdownButton is rendered', () => {
4
3
  cy.visitStory('DropdownButton', 'Default');
5
4
  });
@@ -1,4 +1,4 @@
1
- import { Given, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, Then } from '@badeball/cypress-cucumber-preprocessor';
2
2
  Given('a SplitButton with children is rendered', () => {
3
3
  cy.visitStory('SplitButton', 'With children');
4
4
  cy.get('[data-test="dhis2-uicore-splitbutton"]').should('be.visible');
@@ -1,9 +1,9 @@
1
- import { Given, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, Then } from '@badeball/cypress-cucumber-preprocessor';
2
2
  Given('a SplitButton with an icon is rendered', () => {
3
3
  cy.visitStory('SplitButton', 'With icon');
4
4
  cy.get('[data-test="dhis2-uicore-splitbutton"]').should('be.visible');
5
5
  });
6
6
  Then('the icon is visible on the left button only', () => {
7
- cy.get('[data-test="dhis2-uicore-splitbutton-button"]').contains('Icon').should('be.visible');
8
- cy.get('[data-test="dhis2-uicore-splitbutton-toggle"]').contains('Icon').should('not.exist');
7
+ cy.get('[data-test="dhis2-uicore-splitbutton-button"] :contains("Icon")').should('be.visible');
8
+ cy.get('[data-test="dhis2-uicore-splitbutton-toggle"] :contains("Icon")').should('not.exist');
9
9
  });
@@ -1,4 +1,4 @@
1
- import { Given, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, Then } from '@badeball/cypress-cucumber-preprocessor';
2
2
  Given('a SplitButton with initialFocus is rendered', () => {
3
3
  cy.visitStory('SplitButton', 'With initialFocus');
4
4
  });
@@ -1,5 +1,4 @@
1
- import '../common/index.js';
2
- import { Given, When, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, When, Then } from '@badeball/cypress-cucumber-preprocessor';
3
2
  Given('a SplitButton is rendered', () => {
4
3
  cy.visitStory('SplitButton', 'Default');
5
4
  });
@@ -1,5 +1,4 @@
1
- import '../common/index.js';
2
- import { Given, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, Then } from '@badeball/cypress-cucumber-preprocessor';
3
2
  Given('a SplitButton with onClick hander is rendered', () => {
4
3
  cy.visitStory('SplitButton', 'With onClick');
5
4
  });
@@ -1,4 +1,4 @@
1
- import { Given, When, Then } from 'cypress-cucumber-preprocessor/steps';
1
+ import { Given, When, Then } from '@badeball/cypress-cucumber-preprocessor';
2
2
  Given('a disabled SplitButton is rendered', () => {
3
3
  cy.visitStory('SplitButton', 'With disabled');
4
4
  });
@@ -1,4 +1,4 @@
1
- import { When } from 'cypress-cucumber-preprocessor/steps';
1
+ import { When } from '@badeball/cypress-cucumber-preprocessor';
2
2
  When('the SplitButton is clicked', () => {
3
3
  cy.get('[data-test="dhis2-uicore-splitbutton-button"]').click();
4
4
  });
@@ -10,7 +10,6 @@ import cx from 'classnames';
10
10
  import PropTypes from 'prop-types';
11
11
  import React, { Component } from 'react';
12
12
  import { Button } from '../index.js';
13
- import i18n from '../locales/index.js';
14
13
  const rightButton = {
15
14
  styles: /*#__PURE__*/React.createElement(_JSXStyle, {
16
15
  id: "2502148942"
@@ -28,18 +27,6 @@ class SplitButton extends Component {
28
27
 
29
28
  _defineProperty(this, "anchorRef", /*#__PURE__*/React.createRef());
30
29
 
31
- _defineProperty(this, "handleKeyDown", event => {
32
- event.preventDefault();
33
-
34
- if (event.key === 'Escape' && this.state.open) {
35
- event.stopPropagation();
36
- this.setState({
37
- open: false
38
- });
39
- this.anchorRef.current && this.anchorRef.current.focus();
40
- }
41
- });
42
-
43
30
  _defineProperty(this, "onClick", (payload, event) => {
44
31
  if (this.props.onClick) {
45
32
  this.props.onClick({
@@ -50,19 +37,9 @@ class SplitButton extends Component {
50
37
  }
51
38
  });
52
39
 
53
- _defineProperty(this, "onToggle", () => {
54
- this.setState(prevState => ({
55
- open: !prevState.open
56
- }));
57
- });
58
- }
59
-
60
- componentDidMount() {
61
- document.addEventListener('keydown', this.handleKeyDown);
62
- }
63
-
64
- componentWillUnmount() {
65
- document.removeEventListener('keydown', this.handleKeyDown);
40
+ _defineProperty(this, "onToggle", () => this.setState({
41
+ open: !this.state.open
42
+ }));
66
43
  }
67
44
 
68
45
  render() {
@@ -121,9 +98,7 @@ class SplitButton extends Component {
121
98
  type: type,
122
99
  tabIndex: tabIndex,
123
100
  className: cx(className, rightButton.className),
124
- dataTest: "".concat(dataTest, "-toggle"),
125
- title: i18n.t('Toggle dropdown'),
126
- "aria-label": i18n.t('Toggle dropdown')
101
+ dataTest: "".concat(dataTest, "-toggle")
127
102
  }, arrow), open && /*#__PURE__*/React.createElement(Layer, {
128
103
  onBackdropClick: this.onToggle,
129
104
  transparent: true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dhis2-ui/button",
3
- "version": "9.5.0-alpha.1",
3
+ "version": "9.6.0",
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.5.0-alpha.1",
37
- "@dhis2-ui/loader": "9.5.0-alpha.1",
38
- "@dhis2-ui/popper": "9.5.0-alpha.1",
39
- "@dhis2/ui-constants": "9.5.0-alpha.1",
40
- "@dhis2/ui-icons": "9.5.0-alpha.1",
36
+ "@dhis2-ui/layer": "9.6.0",
37
+ "@dhis2-ui/loader": "9.6.0",
38
+ "@dhis2-ui/popper": "9.6.0",
39
+ "@dhis2/ui-constants": "9.6.0",
40
+ "@dhis2/ui-icons": "9.6.0",
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 extends HTMLButtonElement {
19
+ export interface BaseButtonProps {
20
20
  /**
21
21
  * Component to render inside the button
22
22
  */
@@ -102,6 +102,9 @@ export interface ButtonProps extends HTMLButtonElement {
102
102
  onKeyDown?: ButtonEventHandler<React.KeyboardEvent<HTMLButtonElement>>
103
103
  }
104
104
 
105
+ export type ButtonProps = BaseButtonProps &
106
+ Omit<React.ComponentPropsWithoutRef<'button'>, keyof BaseButtonProps>
107
+
105
108
  export const Button: React.FC<ButtonProps>
106
109
 
107
110
  export interface ButtonStripProps {
@@ -1,3 +0,0 @@
1
- {
2
- "Toggle dropdown": "Toggle dropdown"
3
- }
@@ -1,27 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _d2I18n = _interopRequireDefault(require("@dhis2/d2-i18n"));
9
-
10
- var _translations = _interopRequireDefault(require("./en/translations.json"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- //------------------------------------------------------------------------------
15
- // <auto-generated>
16
- // This code was generated by d2-i18n-generate.
17
- //
18
- // Changes to this file may cause incorrect behavior and will be lost if
19
- // the code is regenerated.
20
- // </auto-generated>
21
- //------------------------------------------------------------------------------
22
- const namespace = 'default';
23
-
24
- _d2I18n.default.addResources('en', namespace, _translations.default);
25
-
26
- var _default = _d2I18n.default;
27
- exports.default = _default;
@@ -1,99 +0,0 @@
1
- "use strict";
2
-
3
- var _react = require("@testing-library/react");
4
-
5
- var _react2 = _interopRequireDefault(require("react"));
6
-
7
- require("@testing-library/jest-dom/extend-expect");
8
-
9
- var _splitButton = require("./split-button.js");
10
-
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
-
13
- describe('SplitButton', () => {
14
- afterEach(_react.cleanup);
15
- it('renders button with children', () => {
16
- const {
17
- getByText
18
- } = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_splitButton.SplitButton, null, "Click me"));
19
- expect(getByText('Click me')).toBeInTheDocument();
20
- });
21
- it('toggles dropdown when left button is clicked', () => {
22
- const {
23
- getByTestId,
24
- queryByTestId
25
- } = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_splitButton.SplitButton, null));
26
- const toggleButton = getByTestId('dhis2-uicore-splitbutton-toggle');
27
-
28
- _react.fireEvent.click(toggleButton);
29
-
30
- expect(queryByTestId('dhis2-uicore-splitbutton-menu')).toBeInTheDocument();
31
-
32
- _react.fireEvent.click(toggleButton);
33
-
34
- expect(queryByTestId('dhis2-uicore-splitbutton-menu')).not.toBeInTheDocument();
35
- });
36
- it('renders dropdown content when open is true', () => {
37
- const {
38
- getByTestId
39
- } = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_splitButton.SplitButton, {
40
- component: /*#__PURE__*/_react2.default.createElement("div", null, "Dropdown Content")
41
- }));
42
- const toggleButton = getByTestId('dhis2-uicore-splitbutton-toggle');
43
-
44
- _react.fireEvent.click(toggleButton);
45
-
46
- expect(getByTestId('dhis2-uicore-splitbutton-menu')).toBeInTheDocument();
47
- });
48
- it("does not close dropdown 'Enter' key is pressed", async () => {
49
- const {
50
- getByTestId
51
- } = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_splitButton.SplitButton, {
52
- component: /*#__PURE__*/_react2.default.createElement("div", null, "Dropdown Content")
53
- }));
54
- const toggleButton = getByTestId('dhis2-uicore-splitbutton-toggle');
55
-
56
- _react.fireEvent.click(toggleButton);
57
-
58
- expect(getByTestId('dhis2-uicore-splitbutton-menu')).toBeInTheDocument();
59
-
60
- _react.fireEvent.keyDown(document, {
61
- key: 'Enter'
62
- }); // Use waitFor to wait for the DOM to update
63
-
64
-
65
- await (0, _react.waitFor)(() => {
66
- expect(getByTestId('dhis2-uicore-splitbutton-menu')).toBeInTheDocument();
67
- });
68
- });
69
- it('closes dropdown when escape key is pressed', async () => {
70
- const {
71
- getByTestId,
72
- queryByTestId
73
- } = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_splitButton.SplitButton, {
74
- component: /*#__PURE__*/_react2.default.createElement("div", null, "Dropdown Content")
75
- }));
76
- const toggleButton = getByTestId('dhis2-uicore-splitbutton-toggle');
77
-
78
- _react.fireEvent.click(toggleButton);
79
-
80
- expect(getByTestId('dhis2-uicore-splitbutton-menu')).toBeInTheDocument();
81
-
82
- _react.fireEvent.keyDown(document, {
83
- key: 'Escape'
84
- }); // Use waitFor to wait for the DOM to update
85
-
86
-
87
- await (0, _react.waitFor)(() => {
88
- expect(queryByTestId('dhis2-uicore-splitbutton-menu')).not.toBeInTheDocument();
89
- });
90
- });
91
- it('adds title and aria-label attributes to the right button', () => {
92
- const {
93
- getByTestId
94
- } = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_splitButton.SplitButton, null));
95
- const toggleButton = getByTestId('dhis2-uicore-splitbutton-toggle');
96
- expect(toggleButton).toHaveAttribute('title', 'Toggle dropdown');
97
- expect(toggleButton).toHaveAttribute('aria-label', 'Toggle dropdown');
98
- });
99
- });
@@ -1,3 +0,0 @@
1
- {
2
- "Toggle dropdown": "Toggle dropdown"
3
- }
@@ -1,13 +0,0 @@
1
- //------------------------------------------------------------------------------
2
- // <auto-generated>
3
- // This code was generated by d2-i18n-generate.
4
- //
5
- // Changes to this file may cause incorrect behavior and will be lost if
6
- // the code is regenerated.
7
- // </auto-generated>
8
- //------------------------------------------------------------------------------
9
- import i18n from '@dhis2/d2-i18n';
10
- import enTranslations from './en/translations.json';
11
- const namespace = 'default';
12
- i18n.addResources('en', namespace, enTranslations);
13
- export default i18n;
@@ -1,77 +0,0 @@
1
- import { render, fireEvent, cleanup, waitFor } from '@testing-library/react';
2
- import React from 'react';
3
- import '@testing-library/jest-dom/extend-expect';
4
- import { SplitButton } from './split-button.js';
5
- describe('SplitButton', () => {
6
- afterEach(cleanup);
7
- it('renders button with children', () => {
8
- const {
9
- getByText
10
- } = render( /*#__PURE__*/React.createElement(SplitButton, null, "Click me"));
11
- expect(getByText('Click me')).toBeInTheDocument();
12
- });
13
- it('toggles dropdown when left button is clicked', () => {
14
- const {
15
- getByTestId,
16
- queryByTestId
17
- } = render( /*#__PURE__*/React.createElement(SplitButton, null));
18
- const toggleButton = getByTestId('dhis2-uicore-splitbutton-toggle');
19
- fireEvent.click(toggleButton);
20
- expect(queryByTestId('dhis2-uicore-splitbutton-menu')).toBeInTheDocument();
21
- fireEvent.click(toggleButton);
22
- expect(queryByTestId('dhis2-uicore-splitbutton-menu')).not.toBeInTheDocument();
23
- });
24
- it('renders dropdown content when open is true', () => {
25
- const {
26
- getByTestId
27
- } = render( /*#__PURE__*/React.createElement(SplitButton, {
28
- component: /*#__PURE__*/React.createElement("div", null, "Dropdown Content")
29
- }));
30
- const toggleButton = getByTestId('dhis2-uicore-splitbutton-toggle');
31
- fireEvent.click(toggleButton);
32
- expect(getByTestId('dhis2-uicore-splitbutton-menu')).toBeInTheDocument();
33
- });
34
- it("does not close dropdown 'Enter' key is pressed", async () => {
35
- const {
36
- getByTestId
37
- } = render( /*#__PURE__*/React.createElement(SplitButton, {
38
- component: /*#__PURE__*/React.createElement("div", null, "Dropdown Content")
39
- }));
40
- const toggleButton = getByTestId('dhis2-uicore-splitbutton-toggle');
41
- fireEvent.click(toggleButton);
42
- expect(getByTestId('dhis2-uicore-splitbutton-menu')).toBeInTheDocument();
43
- fireEvent.keyDown(document, {
44
- key: 'Enter'
45
- }); // Use waitFor to wait for the DOM to update
46
-
47
- await waitFor(() => {
48
- expect(getByTestId('dhis2-uicore-splitbutton-menu')).toBeInTheDocument();
49
- });
50
- });
51
- it('closes dropdown when escape key is pressed', async () => {
52
- const {
53
- getByTestId,
54
- queryByTestId
55
- } = render( /*#__PURE__*/React.createElement(SplitButton, {
56
- component: /*#__PURE__*/React.createElement("div", null, "Dropdown Content")
57
- }));
58
- const toggleButton = getByTestId('dhis2-uicore-splitbutton-toggle');
59
- fireEvent.click(toggleButton);
60
- expect(getByTestId('dhis2-uicore-splitbutton-menu')).toBeInTheDocument();
61
- fireEvent.keyDown(document, {
62
- key: 'Escape'
63
- }); // Use waitFor to wait for the DOM to update
64
-
65
- await waitFor(() => {
66
- expect(queryByTestId('dhis2-uicore-splitbutton-menu')).not.toBeInTheDocument();
67
- });
68
- });
69
- it('adds title and aria-label attributes to the right button', () => {
70
- const {
71
- getByTestId
72
- } = render( /*#__PURE__*/React.createElement(SplitButton, null));
73
- const toggleButton = getByTestId('dhis2-uicore-splitbutton-toggle');
74
- expect(toggleButton).toHaveAttribute('title', 'Toggle dropdown');
75
- expect(toggleButton).toHaveAttribute('aria-label', 'Toggle dropdown');
76
- });
77
- });