mirror of
https://github.com/finos/SymphonyElectron.git
synced 2024-12-26 08:51:22 -06:00
SDA-4443_4444: Adding A11Y to Close and Prevent enter while pod is disabled
This commit is contained in:
parent
dee181592f
commit
e58b654b61
@ -49,6 +49,7 @@ exports[`about app should render correctly 1`] = `
|
|||||||
className="AboutApp-close-button"
|
className="AboutApp-close-button"
|
||||||
data-testid="CLOSE_BUTTON"
|
data-testid="CLOSE_BUTTON"
|
||||||
disabled={false}
|
disabled={false}
|
||||||
|
onKeyDown={[Function]}
|
||||||
onMouseDown={[Function]}
|
onMouseDown={[Function]}
|
||||||
title="Close"
|
title="Close"
|
||||||
>
|
>
|
||||||
|
@ -184,4 +184,93 @@ describe('about app', () => {
|
|||||||
.hasClass('AboutApp-button-save-restart-text'),
|
.hasClass('AboutApp-button-save-restart-text'),
|
||||||
).toBe(true);
|
).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should restore to global config url on cancelling after enter pressed', () => {
|
||||||
|
const cloneAboutDataMock = {
|
||||||
|
...aboutDataMockState,
|
||||||
|
finalConfig: { url: 'bcd.symphony.com' },
|
||||||
|
};
|
||||||
|
|
||||||
|
cloneAboutDataMock.globalConfig = { isPodUrlEditable: true };
|
||||||
|
cloneAboutDataMock.userConfig = { isPodUrlEditable: false };
|
||||||
|
|
||||||
|
const wrapper = shallow(React.createElement(AboutApp));
|
||||||
|
ipcRenderer.send('about-app-data', cloneAboutDataMock);
|
||||||
|
const pod = wrapper.find(`[data-testid="POD_INFO"]`);
|
||||||
|
pod.simulate('click', { detail: 1 });
|
||||||
|
pod.simulate('click', { detail: 2 });
|
||||||
|
pod.simulate('click', { detail: 3 });
|
||||||
|
|
||||||
|
const inputPod = wrapper.find(`[data-testid="POD_INFO_INPUT"]`);
|
||||||
|
inputPod.simulate('change', {
|
||||||
|
target: { value: 'pod.symphony.com123' },
|
||||||
|
});
|
||||||
|
inputPod.simulate('keydown', {
|
||||||
|
target: { value: 'pod.symphony.com123' },
|
||||||
|
keyCode: 13,
|
||||||
|
});
|
||||||
|
wrapper.find(`[data-testid="CANCEL_BUTTON"]`).simulate('click');
|
||||||
|
|
||||||
|
expect(pod.text()).toBe('abcxyz.symphony.com');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should work with A11Y Cancel button', () => {
|
||||||
|
const cloneAboutDataMock = {
|
||||||
|
...aboutDataMockState,
|
||||||
|
finalConfig: { url: 'bcd.symphony.com' },
|
||||||
|
};
|
||||||
|
|
||||||
|
cloneAboutDataMock.globalConfig = { isPodUrlEditable: true };
|
||||||
|
cloneAboutDataMock.userConfig = { isPodUrlEditable: false };
|
||||||
|
|
||||||
|
const wrapper = shallow(React.createElement(AboutApp));
|
||||||
|
ipcRenderer.send('about-app-data', cloneAboutDataMock);
|
||||||
|
const pod = wrapper.find(`[data-testid="POD_INFO"]`);
|
||||||
|
pod.simulate('click', { detail: 1 });
|
||||||
|
pod.simulate('click', { detail: 2 });
|
||||||
|
pod.simulate('click', { detail: 3 });
|
||||||
|
|
||||||
|
wrapper.find(`[data-testid="CANCEL_BUTTON"]`).simulate('keydown', {
|
||||||
|
target: { value: 'pod.symphony.com123' },
|
||||||
|
keyCode: 13,
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(wrapper.find(`[data-testid="CANCEL_BUTTON"]`).exists()).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should work with A11Y Close button', () => {
|
||||||
|
const cloneAboutDataMock = {
|
||||||
|
...aboutDataMockState,
|
||||||
|
finalConfig: { url: 'bcd.symphony.com' },
|
||||||
|
};
|
||||||
|
|
||||||
|
cloneAboutDataMock.globalConfig = { isPodUrlEditable: true };
|
||||||
|
cloneAboutDataMock.userConfig = { isPodUrlEditable: false };
|
||||||
|
|
||||||
|
const wrapper = shallow(React.createElement(AboutApp));
|
||||||
|
ipcRenderer.send('about-app-data', cloneAboutDataMock);
|
||||||
|
const pod = wrapper.find(`[data-testid="POD_INFO"]`);
|
||||||
|
pod.simulate('click', { detail: 1 });
|
||||||
|
pod.simulate('click', { detail: 2 });
|
||||||
|
pod.simulate('click', { detail: 3 });
|
||||||
|
|
||||||
|
const inputPod = wrapper.find(`[data-testid="POD_INFO_INPUT"]`);
|
||||||
|
inputPod.simulate('change', {
|
||||||
|
target: { value: 'pod.symphony.com' },
|
||||||
|
});
|
||||||
|
inputPod.simulate('keydown', {
|
||||||
|
target: { value: 'pod.symphony.com' },
|
||||||
|
keyCode: 13,
|
||||||
|
});
|
||||||
|
|
||||||
|
wrapper.find(`[data-testid="CLOSE_BUTTON"]`).simulate('keydown', {
|
||||||
|
keyCode: 13,
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(ipcRenderer.send).toHaveBeenNthCalledWith(
|
||||||
|
12,
|
||||||
|
'user-pod-updated',
|
||||||
|
'pod.symphony.com',
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -47,6 +47,7 @@ const SFE_CLIENT_TYPE_NAME = 'SFE-Lite';
|
|||||||
const KEY_CODE = {
|
const KEY_CODE = {
|
||||||
ENTER: 13,
|
ENTER: 13,
|
||||||
ESCAPE: 27,
|
ESCAPE: 27,
|
||||||
|
SPACE: 32,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -202,6 +203,7 @@ export default class AboutApp extends React.Component<{}, IState> {
|
|||||||
onMouseDown={this.eventHandlers.onCancel}
|
onMouseDown={this.eventHandlers.onCancel}
|
||||||
title={cancelText}
|
title={cancelText}
|
||||||
data-testid={'CANCEL_BUTTON'}
|
data-testid={'CANCEL_BUTTON'}
|
||||||
|
onKeyDown={this.onCancelKeyDown}
|
||||||
>
|
>
|
||||||
{cancelText}
|
{cancelText}
|
||||||
</button>
|
</button>
|
||||||
@ -219,6 +221,7 @@ export default class AboutApp extends React.Component<{}, IState> {
|
|||||||
data-testid={'CLOSE_BUTTON'}
|
data-testid={'CLOSE_BUTTON'}
|
||||||
ref={this.closeButtonRef}
|
ref={this.closeButtonRef}
|
||||||
disabled={!isValidHostname}
|
disabled={!isValidHostname}
|
||||||
|
onKeyDown={this.onCloseKeyDown}
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className={classNames({
|
className={classNames({
|
||||||
@ -334,6 +337,9 @@ export default class AboutApp extends React.Component<{}, IState> {
|
|||||||
*/
|
*/
|
||||||
public onKeyDown = (e) => {
|
public onKeyDown = (e) => {
|
||||||
if (e.keyCode === KEY_CODE.ENTER) {
|
if (e.keyCode === KEY_CODE.ENTER) {
|
||||||
|
if (!this.state.isValidHostname) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
const { value } = e.target;
|
const { value } = e.target;
|
||||||
this.setState({ updatedHostname: value });
|
this.setState({ updatedHostname: value });
|
||||||
this.handlePodInputBlur(e);
|
this.handlePodInputBlur(e);
|
||||||
@ -348,6 +354,25 @@ export default class AboutApp extends React.Component<{}, IState> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* Handles handle keydown on Close
|
||||||
|
* @param e
|
||||||
|
*/
|
||||||
|
public onCloseKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {
|
||||||
|
if (e.keyCode === KEY_CODE.ENTER || e.keyCode === KEY_CODE.SPACE) {
|
||||||
|
this.close();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles key down on Cancel
|
||||||
|
* @param e
|
||||||
|
*/
|
||||||
|
public onCancelKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {
|
||||||
|
if (e.keyCode === KEY_CODE.ENTER || e.keyCode === KEY_CODE.SPACE) {
|
||||||
|
this.cancel();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validates and sets new hostname
|
* Validates and sets new hostname
|
||||||
|
Loading…
Reference in New Issue
Block a user