This repository was archived by the owner on Sep 9, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathoneNotePicker.tsx
More file actions
64 lines (53 loc) · 4.05 KB
/
Copy pathoneNotePicker.tsx
File metadata and controls
64 lines (53 loc) · 4.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import * as React from 'react';
import './oneNotePicker.scss';
import { OneNotePickerBase } from './oneNotePickerBase';
import { NotebookRenderStrategy } from './components/notebookRenderStrategy';
import { SharedNotebookRenderStrategy } from './components/sharedNotebookRenderStrategy';
import { ExpandableNode } from './components/treeView/expandableNode';
import { LeafNode } from './components/treeView/leafNode';
import { ExpandableNodeRenderStrategy } from './components/treeView/expandableNodeRenderStrategy';
import { GlobalProps } from './props/globalProps';
import { Notebook } from './oneNoteDataStructures/notebook';
import { SharedNotebook } from './oneNoteDataStructures/sharedNotebook';
import { CreateNewNotebookNode } from './components/createNewNotebook/createNewNotebookNode';
export interface OneNotePickerProps extends GlobalProps {
notebooks: Notebook[];
sharedNotebooks?: SharedNotebook[];
}
export class OneNotePicker extends OneNotePickerBase<OneNotePickerProps, {}> {
protected rootNodes(): JSX.Element[] {
const { notebooks, sharedNotebooks, globals } = this.props;
const { focusOnMount, ariaSelectedId } = globals;
const notebookRenderStrategies: ExpandableNodeRenderStrategy[] =
notebooks.map(notebook => new NotebookRenderStrategy(notebook, globals));
const sharedNotebookRenderStrategies: ExpandableNodeRenderStrategy[] = sharedNotebooks ?
sharedNotebooks.map(sharedNotebook => new SharedNotebookRenderStrategy(sharedNotebook, globals)) : [];
const noPersonalNotebooks = notebookRenderStrategies.length === 0;
// The key here is guaranteed to be unique as there is only one max 'Create notebook' affordance
const createNewNotebookExists = this.props.globals.callbacks.onNotebookCreated;
const createNewNotebook = createNewNotebookExists ?
[<CreateNewNotebookNode key='createnewnotebooknode' {...this.props.globals} level={1} tabbable={true} focusOnMount={focusOnMount}></CreateNewNotebookNode>] :
[];
const notebookNodes = notebookRenderStrategies.map((renderStrategy, i) =>
!!this.props.globals.callbacks.onSectionSelected || !!this.props.globals.callbacks.onPageSelected ?
<ExpandableNode globals={this.props.globals} expanded={renderStrategy.isExpanded()} node={renderStrategy}
treeViewId={this.treeViewId()} key={renderStrategy.getId()}
id={renderStrategy.getId()} tabbable={!createNewNotebookExists && i === 0} focusOnMount={!createNewNotebookExists && focusOnMount && i === 0}
ariaSelected={ariaSelectedId ? renderStrategy.isAriaSelected() : i === 0}></ExpandableNode> :
<LeafNode globals={this.props.globals} node={renderStrategy} treeViewId={this.treeViewId()} key={renderStrategy.getId()}
id={renderStrategy.getId()} tabbable={!createNewNotebookExists && i === 0} focusOnMount={!createNewNotebookExists && focusOnMount && i === 0}
ariaSelected={ariaSelectedId ? renderStrategy.isAriaSelected() : i === 0}></LeafNode>);
const sharedNotebookNodes = sharedNotebookRenderStrategies.map((renderStrategy, i) =>
!!this.props.globals.callbacks.onSectionSelected || !!this.props.globals.callbacks.onPageSelected ?
<ExpandableNode globals={this.props.globals} expanded={renderStrategy.isExpanded()} node={renderStrategy}
treeViewId={this.treeViewId()} key={renderStrategy.getId()}
id={renderStrategy.getId()} tabbable={!createNewNotebookExists && noPersonalNotebooks && i === 0}
focusOnMount={!createNewNotebookExists && focusOnMount && noPersonalNotebooks && i === 0}
ariaSelected={ariaSelectedId ? renderStrategy.isAriaSelected() : noPersonalNotebooks && i === 0}></ExpandableNode> :
<LeafNode globals={this.props.globals} node={renderStrategy} treeViewId={this.treeViewId()} key={renderStrategy.getId()}
id={renderStrategy.getId()} tabbable={!createNewNotebookExists && noPersonalNotebooks && i === 0}
focusOnMount={!createNewNotebookExists && focusOnMount && noPersonalNotebooks && i === 0}
ariaSelected={ariaSelectedId ? renderStrategy.isAriaSelected() : noPersonalNotebooks && i === 0}></LeafNode>);
return [...createNewNotebook, ...notebookNodes, ...sharedNotebookNodes];
}
}