* refactor: menuRow directive to MenuRow component * refactor: migrate footer to react * refactor: migrate actions menu to react * refactor: migrate history menu to react * fix: click outside handler use capture to trigger event before re-render occurs which would otherwise cause node.contains to return incorrect result (specifically for the account menu) * refactor: migrate revision preview modal to react * refactor: migrate permissions modal to react * refactor: migrate password wizard to react * refactor: remove unused input modal directive * refactor: remove unused delay hide component * refactor: remove unused filechange directive * refactor: remove unused elemReady directive * refactor: remove unused sn-enter directive * refactor: remove unused lowercase directive * refactor: remove unused autofocus directive * refactor(wip): note view to react * refactor: use mutation observer to deinit textarea listeners * refactor: migrate challenge modal to react * refactor: migrate note group view to react * refactor(wip): migrate remaining classes * fix: navigation parent ref * refactor: fully remove angular assets * fix: account switcher * fix: application view state * refactor: remove unused password wizard type * fix: revision preview and permissions modal * fix: remove angular comment * refactor: react panel resizers for editor * feat: simple panel resizer * fix: use simple panel resizer everywhere * fix: simplify panel resizer state * chore: rename simple panel resizer to panel resizer * refactor: simplify column layout * fix: editor mount safety check * fix: use inline onLoad callback for iframe, as setting onload after it loads will never call it * chore: fix note view test * chore(deps): upgrade snjs
52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
import { ApplicationGroup } from '@/ui_models/application_group';
|
|
import { WebApplication } from '@/ui_models/application';
|
|
import { Component } from 'preact';
|
|
import { ApplicationView } from './ApplicationView';
|
|
|
|
type State = {
|
|
applications: WebApplication[];
|
|
activeApplication?: WebApplication;
|
|
};
|
|
|
|
type Props = {
|
|
mainApplicationGroup: ApplicationGroup;
|
|
};
|
|
|
|
export class ApplicationGroupView extends Component<Props, State> {
|
|
constructor(props: Props) {
|
|
super(props);
|
|
this.state = {
|
|
applications: [],
|
|
};
|
|
props.mainApplicationGroup.addApplicationChangeObserver(() => {
|
|
this.setState({
|
|
activeApplication: props.mainApplicationGroup
|
|
.primaryApplication as WebApplication,
|
|
applications:
|
|
props.mainApplicationGroup.getApplications() as WebApplication[],
|
|
});
|
|
});
|
|
props.mainApplicationGroup.initialize();
|
|
}
|
|
|
|
render() {
|
|
return (
|
|
<>
|
|
{this.state.applications.map((application) => {
|
|
if (application === this.state.activeApplication) {
|
|
return (
|
|
<div id={application.identifier}>
|
|
<ApplicationView
|
|
key={application.identifier}
|
|
mainApplicationGroup={this.props.mainApplicationGroup}
|
|
application={application}
|
|
/>
|
|
</div>
|
|
);
|
|
}
|
|
})}
|
|
</>
|
|
);
|
|
}
|
|
}
|