-
Notifications
You must be signed in to change notification settings - Fork 31
/
navigator.types.ts
80 lines (73 loc) · 2.78 KB
/
navigator.types.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
import { Asset, Entry, KeyValueMap } from './entities'
export interface NavigatorAPIOptions {
/** use `waitForClose` if you want promise to be resolved only after slide in editor is closed */
slideIn?: boolean | { waitForClose: boolean }
}
export interface PageExtensionOptions {
/** If included, you can navigate to a different page extension. If omitted, you will navigate within the current extension. */
id?: string
/** Navigate to a path within your page extension. */
path?: string
}
export interface AppPageLocationOptions {
/** A path to navigate to within your app's page location. */
path?: string
}
/** Information about current value of the navigation status. */
export interface NavigatorPageResponse {
/** Will be true if navigation was successfully executed by the web app. */
navigated: boolean
/** The path that was navigated to by the web app. */
path: string
}
export interface NavigatorSlideInfo {
newSlideLevel: number
oldSlideLevel: number
}
export interface NavigatorOpenResponse<T> {
navigated: boolean
entity?: T
slide?: NavigatorSlideInfo
}
export interface NavigatorAPI {
/** Opens an existing entry in the current Web App session. */
openEntry: <Fields extends KeyValueMap = KeyValueMap>(
entryId: string,
options?: NavigatorAPIOptions,
) => Promise<NavigatorOpenResponse<Entry<Fields>>>
/** Opens an existing asset in the current Web App session. */
openAsset: (
assetId: string,
options?: NavigatorAPIOptions,
) => Promise<NavigatorOpenResponse<Asset>>
/** Opens a new entry in the current Web App session. */
openNewEntry: <Fields extends KeyValueMap = KeyValueMap>(
contentTypeId: string,
options?: NavigatorAPIOptions,
) => Promise<NavigatorOpenResponse<Entry<Fields>>>
/** Opens a new asset in the current Web App session. */
openNewAsset: (options?: NavigatorAPIOptions) => Promise<NavigatorOpenResponse<Asset>>
/** Navigates to a page extension in the current Web App session. Calling without `options` will navigate to the home route of your page extension. */
openPageExtension: (options?: PageExtensionOptions) => Promise<NavigatorPageResponse>
/** Navigates to the app's page location. */
openCurrentAppPage: (options?: AppPageLocationOptions) => Promise<NavigatorPageResponse>
/** Navigates to a bulk entry editor */
openBulkEditor: (
entryId: string,
options: {
/** ID of the reference field */
fieldId: string
/** Editable locale */
locale: string
/** Focused index */
index: number
},
) => Promise<{
navigated: boolean
slide?: NavigatorSlideInfo
}>
openAppConfig: () => Promise<void>
openEntriesList: () => Promise<void>
openAssetsList: () => Promise<void>
onSlideInNavigation: (fn: (slide: NavigatorSlideInfo) => void) => () => void
}