SubMenu.tsx 858 B

123456789101112131415161718192021222324252627282930313233343536
  1. // Libaries
  2. import React, { PureComponent } from 'react';
  3. // Utils & Services
  4. import { AngularComponent, getAngularLoader } from 'app/core/services/AngularLoader';
  5. // Types
  6. import { DashboardModel } from '../../state/DashboardModel';
  7. export interface Props {
  8. dashboard: DashboardModel | null;
  9. }
  10. export class SubMenu extends PureComponent<Props> {
  11. element: HTMLElement;
  12. angularCmp: AngularComponent;
  13. componentDidMount() {
  14. const loader = getAngularLoader();
  15. const template = '<dashboard-submenu dashboard="dashboard" />';
  16. const scopeProps = { dashboard: this.props.dashboard };
  17. this.angularCmp = loader.load(this.element, scopeProps, template);
  18. }
  19. componentWillUnmount() {
  20. if (this.angularCmp) {
  21. this.angularCmp.destroy();
  22. }
  23. }
  24. render() {
  25. return <div ref={element => (this.element = element)} />;
  26. }
  27. }