mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 10:03:33 -06:00
* Chore: Fix typescript strict null errors * Added new limit * Fixed ts issue * fixed tests * trying to fix type inference * Fixing more ts errors * Revert tsconfig option * Fix * Fixed code * More fixes * fix tests * Updated snapshot * Chore: More ts strict null fixes * More fixes in some really messed up azure config components * More fixes, current count: 441 * 419 * More fixes * Fixed invalid initial state in explore * Fixing tests * Fixed tests * Explore fix * More fixes * Progress * Sub 300 * Fixed incorrect type * removed unused import
63 lines
1.5 KiB
TypeScript
63 lines
1.5 KiB
TypeScript
// Libraries
|
|
import React, { Component } from 'react';
|
|
import { getTitleFromNavModel } from 'app/core/selectors/navModel';
|
|
|
|
// Components
|
|
import PageHeader from '../PageHeader/PageHeader';
|
|
import { Footer } from '../Footer/Footer';
|
|
import PageContents from './PageContents';
|
|
import { CustomScrollbar } from '@grafana/ui';
|
|
import { NavModel } from '@grafana/data';
|
|
import { isEqual } from 'lodash';
|
|
import { Branding } from '../Branding/Branding';
|
|
|
|
interface Props {
|
|
children: React.ReactNode;
|
|
navModel: NavModel;
|
|
}
|
|
|
|
class Page extends Component<Props> {
|
|
static Header = PageHeader;
|
|
static Contents = PageContents;
|
|
|
|
componentDidMount() {
|
|
this.updateTitle();
|
|
}
|
|
|
|
componentDidUpdate(prevProps: Props) {
|
|
if (!isEqual(prevProps.navModel, this.props.navModel)) {
|
|
this.updateTitle();
|
|
}
|
|
}
|
|
|
|
updateTitle = () => {
|
|
const title = this.getPageTitle;
|
|
document.title = title ? title + ' - ' + Branding.AppTitle : Branding.AppTitle;
|
|
};
|
|
|
|
get getPageTitle() {
|
|
const { navModel } = this.props;
|
|
if (navModel) {
|
|
return getTitleFromNavModel(navModel) || undefined;
|
|
}
|
|
return undefined;
|
|
}
|
|
|
|
render() {
|
|
const { navModel } = this.props;
|
|
return (
|
|
<div className="page-scrollbar-wrapper">
|
|
<CustomScrollbar autoHeightMin={'100%'} className="custom-scrollbar--page">
|
|
<div className="page-scrollbar-content">
|
|
<PageHeader model={navModel} />
|
|
{this.props.children}
|
|
<Footer />
|
|
</div>
|
|
</CustomScrollbar>
|
|
</div>
|
|
);
|
|
}
|
|
}
|
|
|
|
export default Page;
|