@openfin/fdc3-api 44.101.1 → 44.101.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -42,6 +42,16 @@ declare type Accelerator = {
42
42
  zoom: boolean;
43
43
  };
44
44
 
45
+ /**
46
+ * @interface
47
+ * Shared context available to all aria label functions.
48
+ */
49
+ declare type AccessibilityContext = {
50
+ arrowNavigationEnabled: boolean;
51
+ deleteKeyCloseEnabled: boolean;
52
+ homeEndNavigationEnabled: boolean;
53
+ };
54
+
45
55
  /**
46
56
  * Generated when a View is added to a layout.
47
57
  * @interface
@@ -51,6 +61,14 @@ declare type AddedToLayoutEvent = BaseEvent_4 & {
51
61
  layoutIdentity: OpenFin.LayoutIdentity;
52
62
  };
53
63
 
64
+ /**
65
+ * @interface
66
+ * Context for add tab button aria-label functions.
67
+ */
68
+ declare type AddTabButtonAriaLabelContext = AccessibilityContext & {
69
+ tabCount: number;
70
+ };
71
+
54
72
  /**
55
73
  * Options to use when adding a view to a {@link TabStack}.
56
74
  *
@@ -1596,6 +1614,17 @@ declare type AppVersionRuntimeStatusEvent = {
1596
1614
 
1597
1615
  /* Excluded from this release type: AppVersionTypeFromIdEvent */
1598
1616
 
1617
+ /**
1618
+ * @interface
1619
+ * Custom aria-label providers for accessibility.
1620
+ */
1621
+ declare type AriaLabelOptions = {
1622
+ activeTab?: string | ((ctx: TabAriaLabelContext) => string);
1623
+ inactiveTab?: string | ((ctx: TabAriaLabelContext) => string);
1624
+ closeButton?: string | ((ctx: CloseButtonAriaLabelContext) => string);
1625
+ addTabButton?: string | ((ctx: AddTabButtonAriaLabelContext) => string);
1626
+ };
1627
+
1599
1628
  declare interface AuthorizationPayload {
1600
1629
  token: string;
1601
1630
  file: string;
@@ -3112,6 +3141,11 @@ declare type ClearCacheOption = {
3112
3141
  * browser data that can be used across sessions
3113
3142
  */
3114
3143
  localStorage?: boolean;
3144
+ /**
3145
+ * Clears saved window-state data written for windows that use `saveWindowState`.
3146
+ * After this data is cleared, previously persisted bounds and state (Maximized/Minimized) will not be restored until new state is written again.
3147
+ */
3148
+ windowState?: boolean;
3115
3149
  };
3116
3150
 
3117
3151
  /**
@@ -3154,6 +3188,11 @@ declare type ClearDataOptions = {
3154
3188
  * - `origin-in-all-contexts` - Storage is matched on origin only in all contexts.
3155
3189
  */
3156
3190
  originMatchingMode?: 'third-parties-included' | 'origin-in-all-contexts';
3191
+ /**
3192
+ * Clears saved window-state data written for windows that use `saveWindowState`.
3193
+ * After this data is cleared, previously persisted bounds and state (Maximized/Minimized) will not be restored until new state is written again.
3194
+ */
3195
+ windowState?: boolean;
3157
3196
  };
3158
3197
 
3159
3198
  /**
@@ -3441,6 +3480,15 @@ declare type ClipboardPermissions = {
3441
3480
  */
3442
3481
  declare type ClipboardSelectionType = 'clipboard' | 'selection';
3443
3482
 
3483
+ /**
3484
+ * @interface
3485
+ * Context for close button aria-label functions.
3486
+ */
3487
+ declare type CloseButtonAriaLabelContext = AccessibilityContext & {
3488
+ title: string;
3489
+ isActive: boolean;
3490
+ };
3491
+
3444
3492
  /**
3445
3493
  * Generated when an application is closed.
3446
3494
  * @interface
@@ -4453,6 +4501,10 @@ declare type CreateLayoutOptions = {
4453
4501
  * @experimental
4454
4502
  */
4455
4503
  renderCustomHeaderControls?: (controlsElement: HTMLElement, context: HeaderControlsContext) => (() => void) | void;
4504
+ /**
4505
+ * Accessibility options for the layout. Controls ARIA attributes and keyboard navigation.
4506
+ */
4507
+ accessibilityOptions?: LayoutAccessibilityOptions;
4456
4508
  };
4457
4509
 
4458
4510
  /**
@@ -5136,7 +5188,7 @@ declare interface Environment {
5136
5188
  layoutAllowedInContext(fin: OpenFin.Fin<OpenFin.EntityType>): boolean;
5137
5189
  initLayoutManager(fin: OpenFin.Fin<OpenFin.EntityType>, wire: Transport, options: OpenFin.InitLayoutOptions): Promise<OpenFin.LayoutManager<OpenFin.LayoutSnapshot>>;
5138
5190
  applyLayoutSnapshot(fin: OpenFin.Fin<OpenFin.EntityType>, layoutManager: OpenFin.LayoutManager<OpenFin.LayoutSnapshot>, options: OpenFin.InitLayoutOptions): Promise<void>;
5139
- createLayout(layoutManager: OpenFin.LayoutManager<OpenFin.LayoutSnapshot>, options: OpenFin.CreateLayoutOptions): Promise<void>;
5191
+ createLayout(layoutManager: OpenFin.LayoutManager<OpenFin.LayoutSnapshot>, options: OpenFin.CreateLayoutOptions): Promise<OpenFin.LayoutSyncApi>;
5140
5192
  destroyLayout(layoutManager: OpenFin.LayoutManager<OpenFin.LayoutSnapshot>, layoutIdentity: OpenFin.LayoutIdentity): Promise<void>;
5141
5193
  resolveLayout(layoutManager: OpenFin.LayoutManager<OpenFin.LayoutSnapshot>, layoutIdentity: OpenFin.LayoutIdentity): Promise<any>;
5142
5194
  initPlatform(fin: OpenFin.Fin<OpenFin.EntityType>, ...args: Parameters<OpenFin.Fin['Platform']['init']>): ReturnType<OpenFin.Fin['Platform']['init']>;
@@ -8734,6 +8786,27 @@ declare class Layout extends Base {
8734
8786
  closeView(viewIdentity: OpenFin.Identity): Promise<void>;
8735
8787
  }
8736
8788
 
8789
+ /**
8790
+ * @interface
8791
+ * Accessibility options for layout tab navigation and ARIA support.
8792
+ */
8793
+ declare type LayoutAccessibilityOptions = {
8794
+ viewTabOptions?: ViewTabAccessibilityOptions;
8795
+ /**
8796
+ * Keyboard shortcut used to move focus from a tab header element into the active tab's web content.
8797
+ *
8798
+ * - Accepts an accelerator-like string, e.g. `'Ctrl+Enter'`, `'Meta+Enter'`, `'Alt+Enter'`, `'Mod+Enter'`.
8799
+ * - `'Mod'`/`'CmdOrCtrl'`/`'CtrlOrMeta'` means Ctrl on Windows/Linux or Meta on macOS.
8800
+ * - Set to `false` to disable this shortcut.
8801
+ * - In core-web, reverse focus transfer (from iframe web content back to tab header) is not reliably supportable
8802
+ * due to browser iframe security and cross-origin focus restrictions. This hotkey is intentionally one-way:
8803
+ * tab header -> web content.
8804
+ *
8805
+ * @defaultValue 'Mod+Enter'
8806
+ */
8807
+ focusContentHotkey?: string | false;
8808
+ };
8809
+
8737
8810
  /**
8738
8811
  * @interface
8739
8812
  */
@@ -9117,7 +9190,7 @@ declare class LayoutModule extends Base {
9117
9190
  * @returns
9118
9191
  */
9119
9192
  getCurrentLayoutManagerSync: <UserSnapshotType extends OpenFin.LayoutSnapshot>() => OpenFin.LayoutManager<UserSnapshotType>;
9120
- create: (options: OpenFin.CreateLayoutOptions) => Promise<void>;
9193
+ create: (options: OpenFin.CreateLayoutOptions) => Promise<OpenFin.LayoutSyncApi>;
9121
9194
  destroy: (layoutIdentity: OpenFin.LayoutIdentity) => Promise<void>;
9122
9195
  }
9123
9196
 
@@ -9319,6 +9392,19 @@ declare type LayoutStateChangedEvent = LayoutDOMEvent & {
9319
9392
  type: 'layout-state-changed';
9320
9393
  };
9321
9394
 
9395
+ /**
9396
+ * @interface
9397
+ * Sync API returned from Layout.create() for operations that don't require IPC.
9398
+ * Only available in the window context that owns the layout.
9399
+ */
9400
+ declare type LayoutSyncApi = {
9401
+ /**
9402
+ * Updates accessibility options at runtime without recreating the layout.
9403
+ * @param options Partial accessibility options to merge with existing options
9404
+ */
9405
+ updateAccessibilityOptions(options: Partial<LayoutAccessibilityOptions>): void;
9406
+ };
9407
+
9322
9408
  /**
9323
9409
  * @interface
9324
9410
  */
@@ -10832,6 +10918,15 @@ declare namespace OpenFin {
10832
10918
  HeaderControlsContext,
10833
10919
  CreateLayoutOptions,
10834
10920
  MultiInstanceViewBehavior,
10921
+ LayoutAccessibilityOptions,
10922
+ ViewTabElements,
10923
+ ViewTabAccessibilityOptions,
10924
+ AccessibilityContext,
10925
+ TabAriaLabelContext,
10926
+ CloseButtonAriaLabelContext,
10927
+ AddTabButtonAriaLabelContext,
10928
+ AriaLabelOptions,
10929
+ LayoutSyncApi,
10835
10930
  PresetLayoutOptions_2 as PresetLayoutOptions,
10836
10931
  ResultBehavior,
10837
10932
  PopupBaseBehavior,
@@ -12563,6 +12658,38 @@ declare interface PlatformProvider {
12563
12658
  * @returns A promise resolving to `true` if the window should prevent the app from quitting, otherwise `false`.
12564
12659
  */
12565
12660
  shouldWindowPreventQuit(windowIdentity: OpenFin.Identity): Promise<boolean>;
12661
+ /**
12662
+ * Returns the platform's keyboard commands. Default implementation returns the manifest's
12663
+ * `platform.commands`. Override to inject additional default commands.
12664
+ * Called once during Platform.init; the result is cached for the lifetime
12665
+ * of the platform.
12666
+ *
12667
+ * @remarks
12668
+ * The returned commands are merged with core's built-in default commands
12669
+ * (unless `disableDefaultCommands` is set).
12670
+ * Overriders receive the raw manifest commands from `super` and can prepend
12671
+ * their own defaults — returned commands override default commands by command name.
12672
+ *
12673
+ * @example
12674
+ * ```js
12675
+ * const overrideCallback = (PlatformProvider) => {
12676
+ * class Override extends PlatformProvider {
12677
+ * getKeyboardCommands() {
12678
+ * const manifestCommands = super.getKeyboardCommands();
12679
+ * const myCommands = [{ command: 'myApp.search', keys: 'Ctrl+K' }];
12680
+ * return [
12681
+ * ...myCommands,
12682
+ * ...manifestCommands
12683
+ * ];
12684
+ * }
12685
+ * }
12686
+ * return new Override();
12687
+ * }
12688
+ *
12689
+ * fin.Platform.init({ overrideCallback });
12690
+ * ```
12691
+ */
12692
+ getKeyboardCommands(): OpenFin.ShortcutOverride[];
12566
12693
  /**
12567
12694
  * Method that is called every time an error occurs when processing an action in the Platform Provider. It is meant to be overriden, as a means to debug Platform applications
12568
12695
  */
@@ -15170,13 +15297,15 @@ declare class System extends EmitterBase<OpenFin.SystemEvent> {
15170
15297
  * * cookies: browser [cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)
15171
15298
  * * localStorage: browser data that can be used across sessions ([local storage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage))
15172
15299
  * * appcache: html5 [application cache](https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache)
15300
+ * * windowState: clears data written for windows using `saveWindowState`; after clearing, previously saved bounds and state will not be restored until new state is written
15173
15301
  * @example
15174
15302
  * ```js
15175
15303
  * const clearCacheOptions = {
15176
15304
  * appcache: true,
15177
15305
  * cache: true,
15178
15306
  * cookies: true,
15179
- * localStorage: true
15307
+ * localStorage: true,
15308
+ * windowState: true
15180
15309
  * };
15181
15310
  * fin.System.clearCache(clearCacheOptions).then(() => console.log('Cache cleared')).catch(err => console.log(err));
15182
15311
  * ```
@@ -15201,12 +15330,16 @@ declare class System extends EmitterBase<OpenFin.SystemEvent> {
15201
15330
  *
15202
15331
  * @param options - Optional configuration for what data to clear
15203
15332
  *
15333
+ * @remarks Set `windowState: true` to also clear data written for windows using `saveWindowState`.
15334
+ * After this data is cleared, previously saved bounds and state will not be restored until new state is written again.
15335
+ *
15204
15336
  * @example
15205
15337
  * ```js
15206
15338
  * // Clear only cookies and localStorage for a specific origin
15207
15339
  * await fin.System.clearCacheData({
15208
15340
  * dataTypes: ['cookies', 'localStorage'],
15209
- * origins: ['http://localhost:8081']
15341
+ * origins: ['http://localhost:8081'],
15342
+ * windowState: true
15210
15343
  * });
15211
15344
  *
15212
15345
  * // Clear everything except for a specific origin
@@ -16786,6 +16919,13 @@ declare class System extends EmitterBase<OpenFin.SystemEvent> {
16786
16919
  declare class SystemContentTracing extends Base {
16787
16920
  /**
16788
16921
  * Gets the currently known tracing category groups.
16922
+ *
16923
+ * @example
16924
+ * ```ts
16925
+ * const categories = await fin.System.ContentTracing.getCategories();
16926
+ * const sorted = [...new Set(categories)].sort((a, b) => a.localeCompare(b));
16927
+ * console.log(`Loaded ${sorted.length} tracing categories`);
16928
+ * ```
16789
16929
  */
16790
16930
  getCategories(): Promise<string[]>;
16791
16931
  /**
@@ -16793,6 +16933,29 @@ declare class SystemContentTracing extends Base {
16793
16933
  *
16794
16934
  * Only one content tracing session may be active across the runtime at a time.
16795
16935
  * This method rejects if another identity already owns the active session.
16936
+ *
16937
+ * @example
16938
+ * ```ts
16939
+ * await fin.System.ContentTracing.startRecording({
16940
+ * recording_mode: 'record-as-much-as-possible',
16941
+ * included_categories: [
16942
+ * '*',
16943
+ * 'disabled-by-default-blink.invalidation',
16944
+ * 'disabled-by-default-cc.debug',
16945
+ * 'disabled-by-default-viz.surface_id_flow'
16946
+ * ]
16947
+ * });
16948
+ *
16949
+ * console.log('Content tracing started. Call stopRecording() when ready to collect the trace.');
16950
+ * ```
16951
+ *
16952
+ * @example
16953
+ * ```ts
16954
+ * await fin.System.ContentTracing.startRecording({
16955
+ * categoryFilter: 'electron,blink,cc',
16956
+ * traceOptions: 'record-until-full,enable-sampling'
16957
+ * });
16958
+ * ```
16796
16959
  */
16797
16960
  startRecording(options: OpenFin.TraceConfig | OpenFin.TraceCategoriesAndOptions): Promise<void>;
16798
16961
  /**
@@ -16800,12 +16963,29 @@ declare class SystemContentTracing extends Base {
16800
16963
  *
16801
16964
  * The calling identity must match the identity that started the active tracing session.
16802
16965
  * This method rejects if tracing is not active or is owned by another identity.
16966
+ *
16967
+ * @example
16968
+ * ```ts
16969
+ * const tracePath = await fin.System.ContentTracing.stopRecording();
16970
+ * console.log('Trace written to:', tracePath);
16971
+ * // Load the file in chrome://tracing or https://ui.perfetto.dev/
16972
+ * ```
16803
16973
  */
16804
16974
  stopRecording(): Promise<string>;
16805
16975
  /**
16806
16976
  * Returns the current maximum trace buffer usage across processes.
16807
16977
  *
16808
16978
  * This method is not supported on macOS and rejects on that platform.
16979
+ *
16980
+ * @example
16981
+ * ```ts
16982
+ * try {
16983
+ * const usage = await fin.System.ContentTracing.getTraceBufferUsage();
16984
+ * console.log(`Buffer usage: ${usage.percentage}% (${usage.value})`);
16985
+ * } catch (error) {
16986
+ * console.warn('Trace buffer usage is not available on this platform.', error);
16987
+ * }
16988
+ * ```
16809
16989
  */
16810
16990
  getTraceBufferUsage(): Promise<OpenFin.TraceBufferUsage>;
16811
16991
  }
@@ -16928,6 +17108,17 @@ declare type SystemShutdownHandler = (shutdownEvent: {
16928
17108
  proceed: () => void;
16929
17109
  }) => void;
16930
17110
 
17111
+ /**
17112
+ * @interface
17113
+ * Context for tab aria-label functions.
17114
+ */
17115
+ declare type TabAriaLabelContext = AccessibilityContext & {
17116
+ title: string;
17117
+ isActive: boolean;
17118
+ tabIndex: number;
17119
+ tabCount: number;
17120
+ };
17121
+
16931
17122
  /**
16932
17123
  * Generated when a Layout Tab Component was closed.
16933
17124
  * @interface
@@ -18402,6 +18593,53 @@ declare interface ViewStatuses {
18402
18593
  viewsNotPreventingUnload: Identity_4[];
18403
18594
  }
18404
18595
 
18596
+ /**
18597
+ * @interface
18598
+ * Accessibility options for view tab navigation.
18599
+ */
18600
+ declare type ViewTabAccessibilityOptions = {
18601
+ /**
18602
+ * Controls which elements are reachable via Tab key navigation.
18603
+ * Uses roving tabindex pattern - only one element focusable at a time.
18604
+ * @default ['active-tab', 'add-tab-button']
18605
+ */
18606
+ tabNavigation?: ViewTabElements[];
18607
+ /**
18608
+ * Controls which elements are navigable via Arrow keys.
18609
+ * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button']
18610
+ */
18611
+ arrowNavigation?: ViewTabElements[];
18612
+ /**
18613
+ * Whether Delete/Backspace keys close the focused tab.
18614
+ * @default false
18615
+ */
18616
+ enableDeleteKeyClose?: boolean;
18617
+ /**
18618
+ * Whether Home/End keys jump to first/last navigable element.
18619
+ * @default false
18620
+ */
18621
+ enableHomeEndNavigation?: boolean;
18622
+ /**
18623
+ * Custom aria-label providers. Can be a static string or a function receiving context.
18624
+ */
18625
+ ariaLabels?: AriaLabelOptions;
18626
+ /**
18627
+ * Whether to announce tab changes via aria-live.
18628
+ * @default true
18629
+ */
18630
+ announceTabChanges?: boolean;
18631
+ /**
18632
+ * Focus behavior when a tab is closed via keyboard.
18633
+ * @default 'next'
18634
+ */
18635
+ focusOnCloseStrategy?: 'next' | 'previous' | 'active';
18636
+ };
18637
+
18638
+ /**
18639
+ * Elements that can be navigated in view tabs.
18640
+ */
18641
+ declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button';
18642
+
18405
18643
  /**
18406
18644
  * View throttling state.
18407
18645
  *