enable hotkeys only when a widget is selected (#2262)
This commit is contained in:
parent
77801b10ff
commit
778b82f9ae
|
|
@ -94,8 +94,9 @@ Cypress.Commands.add("CheckShareIcon", (orgName, count) => {
|
||||||
cy.get(homePage.orgList.concat(orgName).concat(")"))
|
cy.get(homePage.orgList.concat(orgName).concat(")"))
|
||||||
.scrollIntoView()
|
.scrollIntoView()
|
||||||
.should("be.visible");
|
.should("be.visible");
|
||||||
cy.get(homePage.orgList.concat(orgName).concat(") .org-share-user-icons"))
|
cy.get(
|
||||||
.should('have.length', count)
|
homePage.orgList.concat(orgName).concat(") .org-share-user-icons"),
|
||||||
|
).should("have.length", count);
|
||||||
});
|
});
|
||||||
|
|
||||||
Cypress.Commands.add("shareApp", (email, role) => {
|
Cypress.Commands.add("shareApp", (email, role) => {
|
||||||
|
|
@ -1144,8 +1145,8 @@ Cypress.Commands.add("Deletepage", Pagename => {
|
||||||
cy.get(".t--page-sidebar-" + Pagename + "");
|
cy.get(".t--page-sidebar-" + Pagename + "");
|
||||||
cy.get(
|
cy.get(
|
||||||
".t--page-sidebar-" +
|
".t--page-sidebar-" +
|
||||||
Pagename +
|
Pagename +
|
||||||
">.t--page-sidebar-menu-actions>.bp3-popover-target",
|
">.t--page-sidebar-menu-actions>.bp3-popover-target",
|
||||||
).click({ force: true });
|
).click({ force: true });
|
||||||
cy.get(pages.Menuaction).click({ force: true });
|
cy.get(pages.Menuaction).click({ force: true });
|
||||||
cy.get(pages.Delete).click({ force: true });
|
cy.get(pages.Delete).click({ force: true });
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,8 @@ import {
|
||||||
pasteWidget,
|
pasteWidget,
|
||||||
} from "actions/widgetActions";
|
} from "actions/widgetActions";
|
||||||
import { isMac } from "utils/helpers";
|
import { isMac } from "utils/helpers";
|
||||||
|
import { getSelectedWidget } from "selectors/ui";
|
||||||
|
import { MAIN_CONTAINER_WIDGET_ID } from "constants/WidgetConstants";
|
||||||
|
|
||||||
type EditorProps = {
|
type EditorProps = {
|
||||||
currentApplicationId?: string;
|
currentApplicationId?: string;
|
||||||
|
|
@ -60,11 +62,33 @@ type EditorProps = {
|
||||||
deleteSelectedWidget: () => void;
|
deleteSelectedWidget: () => void;
|
||||||
cutSelectedWidget: () => void;
|
cutSelectedWidget: () => void;
|
||||||
user?: User;
|
user?: User;
|
||||||
|
selectedWidget?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
type Props = EditorProps & RouteComponentProps<BuilderRouteParams>;
|
type Props = EditorProps & RouteComponentProps<BuilderRouteParams>;
|
||||||
|
|
||||||
|
const getSelectedText = () => {
|
||||||
|
if (typeof window.getSelection === "function") {
|
||||||
|
const selectionObj = window.getSelection();
|
||||||
|
return selectionObj && selectionObj.toString();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
@HotkeysTarget
|
@HotkeysTarget
|
||||||
class Editor extends Component<Props> {
|
class Editor extends Component<Props> {
|
||||||
|
public stopPropagationIfWidgetSelected(e: KeyboardEvent): boolean {
|
||||||
|
if (
|
||||||
|
this.props.selectedWidget &&
|
||||||
|
this.props.selectedWidget != MAIN_CONTAINER_WIDGET_ID &&
|
||||||
|
!getSelectedText()
|
||||||
|
) {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public renderHotkeys() {
|
public renderHotkeys() {
|
||||||
return (
|
return (
|
||||||
<Hotkeys>
|
<Hotkeys>
|
||||||
|
|
@ -91,10 +115,10 @@ class Editor extends Component<Props> {
|
||||||
label="Copy Widget"
|
label="Copy Widget"
|
||||||
group="Canvas"
|
group="Canvas"
|
||||||
onKeyDown={(e: any) => {
|
onKeyDown={(e: any) => {
|
||||||
this.props.copySelectedWidget();
|
if (this.stopPropagationIfWidgetSelected(e)) {
|
||||||
|
this.props.copySelectedWidget();
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
preventDefault
|
|
||||||
stopPropagation
|
|
||||||
/>
|
/>
|
||||||
<Hotkey
|
<Hotkey
|
||||||
global={true}
|
global={true}
|
||||||
|
|
@ -104,19 +128,6 @@ class Editor extends Component<Props> {
|
||||||
onKeyDown={(e: any) => {
|
onKeyDown={(e: any) => {
|
||||||
this.props.pasteCopiedWidget();
|
this.props.pasteCopiedWidget();
|
||||||
}}
|
}}
|
||||||
preventDefault
|
|
||||||
stopPropagation
|
|
||||||
/>
|
|
||||||
<Hotkey
|
|
||||||
global={true}
|
|
||||||
combo="del"
|
|
||||||
label="Delete Widget"
|
|
||||||
group="Canvas"
|
|
||||||
onKeyDown={(e: any) => {
|
|
||||||
if (!isMac()) this.props.deleteSelectedWidget();
|
|
||||||
}}
|
|
||||||
preventDefault
|
|
||||||
stopPropagation
|
|
||||||
/>
|
/>
|
||||||
<Hotkey
|
<Hotkey
|
||||||
global={true}
|
global={true}
|
||||||
|
|
@ -124,10 +135,10 @@ class Editor extends Component<Props> {
|
||||||
label="Delete Widget"
|
label="Delete Widget"
|
||||||
group="Canvas"
|
group="Canvas"
|
||||||
onKeyDown={(e: any) => {
|
onKeyDown={(e: any) => {
|
||||||
if (isMac()) this.props.deleteSelectedWidget();
|
if (this.stopPropagationIfWidgetSelected(e) && isMac()) {
|
||||||
|
this.props.pasteCopiedWidget();
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
preventDefault
|
|
||||||
stopPropagation
|
|
||||||
/>
|
/>
|
||||||
<Hotkey
|
<Hotkey
|
||||||
global={true}
|
global={true}
|
||||||
|
|
@ -135,10 +146,10 @@ class Editor extends Component<Props> {
|
||||||
label="Delete Widget"
|
label="Delete Widget"
|
||||||
group="Canvas"
|
group="Canvas"
|
||||||
onKeyDown={(e: any) => {
|
onKeyDown={(e: any) => {
|
||||||
this.props.deleteSelectedWidget();
|
if (this.stopPropagationIfWidgetSelected(e)) {
|
||||||
|
this.props.deleteSelectedWidget();
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
preventDefault
|
|
||||||
stopPropagation
|
|
||||||
/>
|
/>
|
||||||
<Hotkey
|
<Hotkey
|
||||||
global={true}
|
global={true}
|
||||||
|
|
@ -146,10 +157,10 @@ class Editor extends Component<Props> {
|
||||||
label="Cut Widget"
|
label="Cut Widget"
|
||||||
group="Canvas"
|
group="Canvas"
|
||||||
onKeyDown={(e: any) => {
|
onKeyDown={(e: any) => {
|
||||||
this.props.cutSelectedWidget();
|
if (this.stopPropagationIfWidgetSelected(e)) {
|
||||||
|
this.props.cutSelectedWidget();
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
preventDefault
|
|
||||||
stopPropagation
|
|
||||||
/>
|
/>
|
||||||
</Hotkeys>
|
</Hotkeys>
|
||||||
);
|
);
|
||||||
|
|
@ -264,6 +275,7 @@ const mapStateToProps = (state: AppState) => ({
|
||||||
isEditorLoading: getIsEditorLoading(state),
|
isEditorLoading: getIsEditorLoading(state),
|
||||||
isEditorInitialized: getIsEditorInitialized(state),
|
isEditorInitialized: getIsEditorInitialized(state),
|
||||||
user: getCurrentUser(state),
|
user: getCurrentUser(state),
|
||||||
|
selectedWidget: getSelectedWidget(state),
|
||||||
});
|
});
|
||||||
|
|
||||||
const mapDispatchToProps = (dispatch: any) => {
|
const mapDispatchToProps = (dispatch: any) => {
|
||||||
|
|
|
||||||
4
app/client/src/selectors/ui.tsx
Normal file
4
app/client/src/selectors/ui.tsx
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
import { AppState } from "reducers";
|
||||||
|
|
||||||
|
export const getSelectedWidget = (state: AppState) =>
|
||||||
|
state.ui.widgetDragResize.selectedWidget;
|
||||||
Loading…
Reference in New Issue
Block a user