mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
WIP: Adding support page (#1030)
* WIP: Adding support page Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com> * lint Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
This commit is contained in:
parent
c566c85351
commit
36cc10d222
2
src/renderer/components/+support/index.tsx
Normal file
2
src/renderer/components/+support/index.tsx
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export * from "./support.route"
|
||||||
|
export * from "./support"
|
||||||
8
src/renderer/components/+support/support.route.ts
Normal file
8
src/renderer/components/+support/support.route.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import { RouteProps } from "react-router";
|
||||||
|
import { buildURL } from "../../navigation";
|
||||||
|
|
||||||
|
export const supportRoute: RouteProps = {
|
||||||
|
path: "/support"
|
||||||
|
}
|
||||||
|
|
||||||
|
export const supportURL = buildURL(supportRoute.path)
|
||||||
67
src/renderer/components/+support/support.scss
Normal file
67
src/renderer/components/+support/support.scss
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
.Support {
|
||||||
|
position: fixed!important; // Allows to cover ClustersMenu
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
.WizardLayout {
|
||||||
|
grid-template-columns: unset;
|
||||||
|
grid-template-rows: 76px 1fr;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
.content-col {
|
||||||
|
padding: $padding * 8 0;
|
||||||
|
background-color: $clusterSettingsBackground;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
margin-bottom: $margin * 2;
|
||||||
|
|
||||||
|
&:not(:first-child) {
|
||||||
|
margin-top: $margin * 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.SubTitle {
|
||||||
|
text-transform: none;
|
||||||
|
margin: 0!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repos {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.Badge {
|
||||||
|
display: flex;
|
||||||
|
margin: 0;
|
||||||
|
margin-bottom: 1px;
|
||||||
|
padding: $padding $padding * 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.hint {
|
||||||
|
margin-top: -$margin;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
span.supportLink {
|
||||||
|
cursor: pointer;
|
||||||
|
color: $primary;
|
||||||
|
text-decoration: underline;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-mac & {
|
||||||
|
.WizardLayout .head-col {
|
||||||
|
padding-top: 32px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.Icon {
|
||||||
|
margin-top: -$margin * 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.Select {
|
||||||
|
&__control {
|
||||||
|
box-shadow: 0 0 0 1px $borderFaintColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
51
src/renderer/components/+support/support.tsx
Normal file
51
src/renderer/components/+support/support.tsx
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
import "./support.scss"
|
||||||
|
import React from "react"
|
||||||
|
import { observer } from "mobx-react"
|
||||||
|
import { Icon } from "../icon"
|
||||||
|
import { WizardLayout } from "../layout/wizard-layout"
|
||||||
|
import { history } from "../../navigation"
|
||||||
|
import { Trans } from "@lingui/macro"
|
||||||
|
import { shell } from "electron"
|
||||||
|
import { issuesTrackerUrl, slackUrl } from "../../../common/vars";
|
||||||
|
import { t } from "@lingui/macro";
|
||||||
|
import { _i18n } from "../../i18n";
|
||||||
|
|
||||||
|
@observer
|
||||||
|
export class Support extends React.Component {
|
||||||
|
|
||||||
|
async componentDidMount() {
|
||||||
|
window.addEventListener('keydown', this.onEscapeKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillUnmount() {
|
||||||
|
window.removeEventListener('keydown', this.onEscapeKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
onEscapeKey = (evt: KeyboardEvent) => {
|
||||||
|
if (evt.code === "Escape") {
|
||||||
|
evt.stopPropagation();
|
||||||
|
history.goBack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const header = (
|
||||||
|
<>
|
||||||
|
<h2>Support</h2>
|
||||||
|
<Icon material="close" big onClick={history.goBack}/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
return (
|
||||||
|
<div className="Support">
|
||||||
|
<WizardLayout header={header} centered>
|
||||||
|
<h2><Trans>Community Slack Channel</Trans></h2>
|
||||||
|
<p>{_i18n._(t`Ask a question, see what's being discussed, join the conversation`)} <span className="supportLink" title={_i18n._(t`here`)} onClick={() => shell.openExternal(slackUrl) }>here</span></p>
|
||||||
|
<h2><Trans>Report an Issue</Trans></h2>
|
||||||
|
<p>{_i18n._(t`Review existing issues or open a new one`)} <span className="supportLink" title={_i18n._(t`here`)} onClick={() => shell.openExternal(issuesTrackerUrl) }>here</span></p>
|
||||||
|
<h2><Trans>Commercial Support</Trans></h2>
|
||||||
|
<p>TBD</p>
|
||||||
|
</WizardLayout>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -10,4 +10,9 @@
|
|||||||
--flex-gap: #{$spacing};
|
--flex-gap: #{$spacing};
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#support {
|
||||||
|
--flex-gap: #{$spacing};
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,9 @@ import { Icon } from "../icon";
|
|||||||
import { WorkspaceMenu } from "../+workspaces/workspace-menu";
|
import { WorkspaceMenu } from "../+workspaces/workspace-menu";
|
||||||
import { workspaceStore } from "../../../common/workspace-store";
|
import { workspaceStore } from "../../../common/workspace-store";
|
||||||
|
|
||||||
|
import { supportURL } from "../+support/support.route";
|
||||||
|
import { navigate } from "../../navigation";
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class BottomBar extends React.Component {
|
export class BottomBar extends React.Component {
|
||||||
render() {
|
render() {
|
||||||
@ -16,6 +19,13 @@ export class BottomBar extends React.Component {
|
|||||||
<span className="workspace-name">{currentWorkspace.name}</span>
|
<span className="workspace-name">{currentWorkspace.name}</span>
|
||||||
</div>
|
</div>
|
||||||
<WorkspaceMenu htmlFor="current-workspace"/>
|
<WorkspaceMenu htmlFor="current-workspace"/>
|
||||||
|
<div id="support" className="flex gaps align-center box right">
|
||||||
|
<Icon
|
||||||
|
small
|
||||||
|
svg="support"
|
||||||
|
onClick={() => navigate(supportURL())}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import { ClustersMenu } from "./clusters-menu";
|
|||||||
import { BottomBar } from "./bottom-bar";
|
import { BottomBar } from "./bottom-bar";
|
||||||
import { LandingPage, landingRoute, landingURL } from "../+landing-page";
|
import { LandingPage, landingRoute, landingURL } from "../+landing-page";
|
||||||
import { Preferences, preferencesRoute } from "../+preferences";
|
import { Preferences, preferencesRoute } from "../+preferences";
|
||||||
|
import { Support, supportRoute } from "../+support";
|
||||||
import { Workspaces, workspacesRoute } from "../+workspaces";
|
import { Workspaces, workspacesRoute } from "../+workspaces";
|
||||||
import { AddCluster, addClusterRoute } from "../+add-cluster";
|
import { AddCluster, addClusterRoute } from "../+add-cluster";
|
||||||
import { ClusterView } from "./cluster-view";
|
import { ClusterView } from "./cluster-view";
|
||||||
@ -59,6 +60,7 @@ export class ClusterManager extends React.Component {
|
|||||||
<Switch>
|
<Switch>
|
||||||
<Route component={LandingPage} {...landingRoute} />
|
<Route component={LandingPage} {...landingRoute} />
|
||||||
<Route component={Preferences} {...preferencesRoute} />
|
<Route component={Preferences} {...preferencesRoute} />
|
||||||
|
<Route component={Support} {...supportRoute} />
|
||||||
<Route component={Workspaces} {...workspacesRoute} />
|
<Route component={Workspaces} {...workspacesRoute} />
|
||||||
<Route component={AddCluster} {...addClusterRoute} />
|
<Route component={AddCluster} {...addClusterRoute} />
|
||||||
<Route component={ClusterView} {...clusterViewRoute} />
|
<Route component={ClusterView} {...clusterViewRoute} />
|
||||||
|
|||||||
1
src/renderer/components/icon/support.svg
Normal file
1
src/renderer/components/icon/support.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" viewBox="0 0 24 24" <g><path d="M12,2C6.48,2,2,6.48,2,12c0,5.52,4.48,10,10,10s10-4.48,10-10C22,6.48,17.52,2,12,2z M19.46,9.12l-2.78,1.15 c-0.51-1.36-1.58-2.44-2.95-2.94l1.15-2.78C16.98,5.35,18.65,7.02,19.46,9.12z M12,15c-1.66,0-3-1.34-3-3s1.34-3,3-3s3,1.34,3,3 S13.66,15,12,15z M9.13,4.54l1.17,2.78c-1.38,0.5-2.47,1.59-2.98,2.97L4.54,9.13C5.35,7.02,7.02,5.35,9.13,4.54z M4.54,14.87 l2.78-1.15c0.51,1.38,1.59,2.46,2.97,2.96l-1.17,2.78C7.02,18.65,5.35,16.98,4.54,14.87z M14.88,19.46l-1.15-2.78 c1.37-0.51,2.45-1.59,2.95-2.97l2.78,1.17C18.65,16.98,16.98,18.65,14.88,19.46z"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 656 B |
Loading…
Reference in New Issue
Block a user