/
StatusBarItemUtilities.ts
88 lines (84 loc) · 2.16 KB
/
StatusBarItemUtilities.ts
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
/** @packageDocumentation
* @module StatusBar
*/
import type * as React from "react";
import type { ConditionalStringValue } from "@itwin/appui-abstract";
import type { IconSpec } from "@itwin/core-react";
import type {
StatusBarActionItem,
StatusBarCustomItem,
StatusBarLabelItem,
StatusBarSection,
} from "./StatusBarItem";
import { StatusBarLabelSide } from "./StatusBarItem";
/** Utility functions for creating and maintaining StatusBar items.
* @public
*/
export namespace StatusBarItemUtilities {
/** Creates a StatusBar item to perform an action.
* @beta
*/
export function createActionItem(
id: string,
section: StatusBarSection,
itemPriority: number,
icon: IconSpec,
tooltip: string | ConditionalStringValue,
execute: () => void,
overrides?: Partial<StatusBarActionItem>
): StatusBarActionItem {
return {
id,
section,
itemPriority,
icon,
tooltip,
execute,
...overrides,
};
}
/** Creates a StatusBar item to display a label.
* @beta
*/
export function createLabelItem(
id: string,
section: StatusBarSection,
itemPriority: number,
icon: IconSpec,
label: string | ConditionalStringValue,
labelSide = StatusBarLabelSide.Right,
overrides?: Partial<StatusBarLabelItem>
): StatusBarLabelItem {
return {
id,
section,
itemPriority,
icon,
label,
labelSide,
...overrides,
};
}
/** Creates a StatusBar item to display a custom content.
* @beta
*/
export function createCustomItem(
id: string,
section: StatusBarSection,
itemPriority: number,
content: React.ReactNode,
overrides?: Partial<StatusBarCustomItem>
): StatusBarCustomItem {
return {
id,
section,
itemPriority,
content,
...overrides,
};
}
}