@openfin/fdc3-api 44.101.2 → 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
@@ -16975,6 +17108,17 @@ declare type SystemShutdownHandler = (shutdownEvent: {
16975
17108
  proceed: () => void;
16976
17109
  }) => void;
16977
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
+
16978
17122
  /**
16979
17123
  * Generated when a Layout Tab Component was closed.
16980
17124
  * @interface
@@ -18449,6 +18593,53 @@ declare interface ViewStatuses {
18449
18593
  viewsNotPreventingUnload: Identity_4[];
18450
18594
  }
18451
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
+
18452
18643
  /**
18453
18644
  * View throttling state.
18454
18645
  *
@@ -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
@@ -16975,6 +17108,17 @@ declare type SystemShutdownHandler = (shutdownEvent: {
16975
17108
  proceed: () => void;
16976
17109
  }) => void;
16977
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
+
16978
17122
  /**
16979
17123
  * Generated when a Layout Tab Component was closed.
16980
17124
  * @interface
@@ -18449,6 +18593,53 @@ declare interface ViewStatuses {
18449
18593
  viewsNotPreventingUnload: Identity_4[];
18450
18594
  }
18451
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
+
18452
18643
  /**
18453
18644
  * View throttling state.
18454
18645
  *
@@ -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
@@ -16975,6 +17108,17 @@ declare type SystemShutdownHandler = (shutdownEvent: {
16975
17108
  proceed: () => void;
16976
17109
  }) => void;
16977
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
+
16978
17122
  /**
16979
17123
  * Generated when a Layout Tab Component was closed.
16980
17124
  * @interface
@@ -18449,6 +18593,53 @@ declare interface ViewStatuses {
18449
18593
  viewsNotPreventingUnload: Identity_4[];
18450
18594
  }
18451
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
+
18452
18643
  /**
18453
18644
  * View throttling state.
18454
18645
  *
package/out/fdc3-api.d.ts CHANGED
@@ -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
  *
@@ -1610,6 +1628,17 @@ declare type AppVersionTypeFromIdEvent<T extends IdEventType> = Extract<AppVersi
1610
1628
  type: WithoutId<T>;
1611
1629
  }>;
1612
1630
 
1631
+ /**
1632
+ * @interface
1633
+ * Custom aria-label providers for accessibility.
1634
+ */
1635
+ declare type AriaLabelOptions = {
1636
+ activeTab?: string | ((ctx: TabAriaLabelContext) => string);
1637
+ inactiveTab?: string | ((ctx: TabAriaLabelContext) => string);
1638
+ closeButton?: string | ((ctx: CloseButtonAriaLabelContext) => string);
1639
+ addTabButton?: string | ((ctx: AddTabButtonAriaLabelContext) => string);
1640
+ };
1641
+
1613
1642
  declare interface AuthorizationPayload {
1614
1643
  token: string;
1615
1644
  file: string;
@@ -3168,6 +3197,11 @@ declare type ClearCacheOption = {
3168
3197
  * browser data that can be used across sessions
3169
3198
  */
3170
3199
  localStorage?: boolean;
3200
+ /**
3201
+ * Clears saved window-state data written for windows that use `saveWindowState`.
3202
+ * After this data is cleared, previously persisted bounds and state (Maximized/Minimized) will not be restored until new state is written again.
3203
+ */
3204
+ windowState?: boolean;
3171
3205
  };
3172
3206
 
3173
3207
  /**
@@ -3210,6 +3244,11 @@ declare type ClearDataOptions = {
3210
3244
  * - `origin-in-all-contexts` - Storage is matched on origin only in all contexts.
3211
3245
  */
3212
3246
  originMatchingMode?: 'third-parties-included' | 'origin-in-all-contexts';
3247
+ /**
3248
+ * Clears saved window-state data written for windows that use `saveWindowState`.
3249
+ * After this data is cleared, previously persisted bounds and state (Maximized/Minimized) will not be restored until new state is written again.
3250
+ */
3251
+ windowState?: boolean;
3213
3252
  };
3214
3253
 
3215
3254
  /**
@@ -3497,6 +3536,15 @@ declare type ClipboardPermissions = {
3497
3536
  */
3498
3537
  declare type ClipboardSelectionType = 'clipboard' | 'selection';
3499
3538
 
3539
+ /**
3540
+ * @interface
3541
+ * Context for close button aria-label functions.
3542
+ */
3543
+ declare type CloseButtonAriaLabelContext = AccessibilityContext & {
3544
+ title: string;
3545
+ isActive: boolean;
3546
+ };
3547
+
3500
3548
  /**
3501
3549
  * Generated when an application is closed.
3502
3550
  * @interface
@@ -4512,6 +4560,10 @@ declare type CreateLayoutOptions = {
4512
4560
  * @experimental
4513
4561
  */
4514
4562
  renderCustomHeaderControls?: (controlsElement: HTMLElement, context: HeaderControlsContext) => (() => void) | void;
4563
+ /**
4564
+ * Accessibility options for the layout. Controls ARIA attributes and keyboard navigation.
4565
+ */
4566
+ accessibilityOptions?: LayoutAccessibilityOptions;
4515
4567
  };
4516
4568
 
4517
4569
  /**
@@ -5200,7 +5252,7 @@ declare interface Environment {
5200
5252
  layoutAllowedInContext(fin: OpenFin.Fin<OpenFin.EntityType>): boolean;
5201
5253
  initLayoutManager(fin: OpenFin.Fin<OpenFin.EntityType>, wire: Transport, options: OpenFin.InitLayoutOptions): Promise<OpenFin.LayoutManager<OpenFin.LayoutSnapshot>>;
5202
5254
  applyLayoutSnapshot(fin: OpenFin.Fin<OpenFin.EntityType>, layoutManager: OpenFin.LayoutManager<OpenFin.LayoutSnapshot>, options: OpenFin.InitLayoutOptions): Promise<void>;
5203
- createLayout(layoutManager: OpenFin.LayoutManager<OpenFin.LayoutSnapshot>, options: OpenFin.CreateLayoutOptions): Promise<void>;
5255
+ createLayout(layoutManager: OpenFin.LayoutManager<OpenFin.LayoutSnapshot>, options: OpenFin.CreateLayoutOptions): Promise<OpenFin.LayoutSyncApi>;
5204
5256
  destroyLayout(layoutManager: OpenFin.LayoutManager<OpenFin.LayoutSnapshot>, layoutIdentity: OpenFin.LayoutIdentity): Promise<void>;
5205
5257
  resolveLayout(layoutManager: OpenFin.LayoutManager<OpenFin.LayoutSnapshot>, layoutIdentity: OpenFin.LayoutIdentity): Promise<any>;
5206
5258
  initPlatform(fin: OpenFin.Fin<OpenFin.EntityType>, ...args: Parameters<OpenFin.Fin['Platform']['init']>): ReturnType<OpenFin.Fin['Platform']['init']>;
@@ -8860,6 +8912,27 @@ declare class Layout extends Base {
8860
8912
  closeView(viewIdentity: OpenFin.Identity): Promise<void>;
8861
8913
  }
8862
8914
 
8915
+ /**
8916
+ * @interface
8917
+ * Accessibility options for layout tab navigation and ARIA support.
8918
+ */
8919
+ declare type LayoutAccessibilityOptions = {
8920
+ viewTabOptions?: ViewTabAccessibilityOptions;
8921
+ /**
8922
+ * Keyboard shortcut used to move focus from a tab header element into the active tab's web content.
8923
+ *
8924
+ * - Accepts an accelerator-like string, e.g. `'Ctrl+Enter'`, `'Meta+Enter'`, `'Alt+Enter'`, `'Mod+Enter'`.
8925
+ * - `'Mod'`/`'CmdOrCtrl'`/`'CtrlOrMeta'` means Ctrl on Windows/Linux or Meta on macOS.
8926
+ * - Set to `false` to disable this shortcut.
8927
+ * - In core-web, reverse focus transfer (from iframe web content back to tab header) is not reliably supportable
8928
+ * due to browser iframe security and cross-origin focus restrictions. This hotkey is intentionally one-way:
8929
+ * tab header -> web content.
8930
+ *
8931
+ * @defaultValue 'Mod+Enter'
8932
+ */
8933
+ focusContentHotkey?: string | false;
8934
+ };
8935
+
8863
8936
  /**
8864
8937
  * @interface
8865
8938
  */
@@ -9243,7 +9316,7 @@ declare class LayoutModule extends Base {
9243
9316
  * @returns
9244
9317
  */
9245
9318
  getCurrentLayoutManagerSync: <UserSnapshotType extends OpenFin.LayoutSnapshot>() => OpenFin.LayoutManager<UserSnapshotType>;
9246
- create: (options: OpenFin.CreateLayoutOptions) => Promise<void>;
9319
+ create: (options: OpenFin.CreateLayoutOptions) => Promise<OpenFin.LayoutSyncApi>;
9247
9320
  destroy: (layoutIdentity: OpenFin.LayoutIdentity) => Promise<void>;
9248
9321
  }
9249
9322
 
@@ -9628,6 +9701,19 @@ declare type LayoutStateChangedEvent = LayoutDOMEvent & {
9628
9701
  type: 'layout-state-changed';
9629
9702
  };
9630
9703
 
9704
+ /**
9705
+ * @interface
9706
+ * Sync API returned from Layout.create() for operations that don't require IPC.
9707
+ * Only available in the window context that owns the layout.
9708
+ */
9709
+ declare type LayoutSyncApi = {
9710
+ /**
9711
+ * Updates accessibility options at runtime without recreating the layout.
9712
+ * @param options Partial accessibility options to merge with existing options
9713
+ */
9714
+ updateAccessibilityOptions(options: Partial<LayoutAccessibilityOptions>): void;
9715
+ };
9716
+
9631
9717
  /**
9632
9718
  * @interface
9633
9719
  */
@@ -11166,6 +11252,15 @@ declare namespace OpenFin {
11166
11252
  HeaderControlsContext,
11167
11253
  CreateLayoutOptions,
11168
11254
  MultiInstanceViewBehavior,
11255
+ LayoutAccessibilityOptions,
11256
+ ViewTabElements,
11257
+ ViewTabAccessibilityOptions,
11258
+ AccessibilityContext,
11259
+ TabAriaLabelContext,
11260
+ CloseButtonAriaLabelContext,
11261
+ AddTabButtonAriaLabelContext,
11262
+ AriaLabelOptions,
11263
+ LayoutSyncApi,
11169
11264
  PresetLayoutOptions_2 as PresetLayoutOptions,
11170
11265
  ResultBehavior,
11171
11266
  PopupBaseBehavior,
@@ -12980,6 +13075,38 @@ declare interface PlatformProvider {
12980
13075
  * @returns A promise resolving to `true` if the window should prevent the app from quitting, otherwise `false`.
12981
13076
  */
12982
13077
  shouldWindowPreventQuit(windowIdentity: OpenFin.Identity): Promise<boolean>;
13078
+ /**
13079
+ * Returns the platform's keyboard commands. Default implementation returns the manifest's
13080
+ * `platform.commands`. Override to inject additional default commands.
13081
+ * Called once during Platform.init; the result is cached for the lifetime
13082
+ * of the platform.
13083
+ *
13084
+ * @remarks
13085
+ * The returned commands are merged with core's built-in default commands
13086
+ * (unless `disableDefaultCommands` is set).
13087
+ * Overriders receive the raw manifest commands from `super` and can prepend
13088
+ * their own defaults — returned commands override default commands by command name.
13089
+ *
13090
+ * @example
13091
+ * ```js
13092
+ * const overrideCallback = (PlatformProvider) => {
13093
+ * class Override extends PlatformProvider {
13094
+ * getKeyboardCommands() {
13095
+ * const manifestCommands = super.getKeyboardCommands();
13096
+ * const myCommands = [{ command: 'myApp.search', keys: 'Ctrl+K' }];
13097
+ * return [
13098
+ * ...myCommands,
13099
+ * ...manifestCommands
13100
+ * ];
13101
+ * }
13102
+ * }
13103
+ * return new Override();
13104
+ * }
13105
+ *
13106
+ * fin.Platform.init({ overrideCallback });
13107
+ * ```
13108
+ */
13109
+ getKeyboardCommands(): OpenFin.ShortcutOverride[];
12983
13110
  /**
12984
13111
  * 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
12985
13112
  */
@@ -15593,13 +15720,15 @@ declare class System extends EmitterBase<OpenFin.SystemEvent> {
15593
15720
  * * cookies: browser [cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)
15594
15721
  * * localStorage: browser data that can be used across sessions ([local storage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage))
15595
15722
  * * appcache: html5 [application cache](https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache)
15723
+ * * windowState: clears data written for windows using `saveWindowState`; after clearing, previously saved bounds and state will not be restored until new state is written
15596
15724
  * @example
15597
15725
  * ```js
15598
15726
  * const clearCacheOptions = {
15599
15727
  * appcache: true,
15600
15728
  * cache: true,
15601
15729
  * cookies: true,
15602
- * localStorage: true
15730
+ * localStorage: true,
15731
+ * windowState: true
15603
15732
  * };
15604
15733
  * fin.System.clearCache(clearCacheOptions).then(() => console.log('Cache cleared')).catch(err => console.log(err));
15605
15734
  * ```
@@ -15624,12 +15753,16 @@ declare class System extends EmitterBase<OpenFin.SystemEvent> {
15624
15753
  *
15625
15754
  * @param options - Optional configuration for what data to clear
15626
15755
  *
15756
+ * @remarks Set `windowState: true` to also clear data written for windows using `saveWindowState`.
15757
+ * After this data is cleared, previously saved bounds and state will not be restored until new state is written again.
15758
+ *
15627
15759
  * @example
15628
15760
  * ```js
15629
15761
  * // Clear only cookies and localStorage for a specific origin
15630
15762
  * await fin.System.clearCacheData({
15631
15763
  * dataTypes: ['cookies', 'localStorage'],
15632
- * origins: ['http://localhost:8081']
15764
+ * origins: ['http://localhost:8081'],
15765
+ * windowState: true
15633
15766
  * });
15634
15767
  *
15635
15768
  * // Clear everything except for a specific origin
@@ -17404,6 +17537,17 @@ declare type SystemShutdownHandler = (shutdownEvent: {
17404
17537
  proceed: () => void;
17405
17538
  }) => void;
17406
17539
 
17540
+ /**
17541
+ * @interface
17542
+ * Context for tab aria-label functions.
17543
+ */
17544
+ declare type TabAriaLabelContext = AccessibilityContext & {
17545
+ title: string;
17546
+ isActive: boolean;
17547
+ tabIndex: number;
17548
+ tabCount: number;
17549
+ };
17550
+
17407
17551
  /**
17408
17552
  * Generated when a Layout Tab Component was closed.
17409
17553
  * @interface
@@ -18916,6 +19060,53 @@ declare interface ViewStatuses {
18916
19060
  viewsNotPreventingUnload: Identity_4[];
18917
19061
  }
18918
19062
 
19063
+ /**
19064
+ * @interface
19065
+ * Accessibility options for view tab navigation.
19066
+ */
19067
+ declare type ViewTabAccessibilityOptions = {
19068
+ /**
19069
+ * Controls which elements are reachable via Tab key navigation.
19070
+ * Uses roving tabindex pattern - only one element focusable at a time.
19071
+ * @default ['active-tab', 'add-tab-button']
19072
+ */
19073
+ tabNavigation?: ViewTabElements[];
19074
+ /**
19075
+ * Controls which elements are navigable via Arrow keys.
19076
+ * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button']
19077
+ */
19078
+ arrowNavigation?: ViewTabElements[];
19079
+ /**
19080
+ * Whether Delete/Backspace keys close the focused tab.
19081
+ * @default false
19082
+ */
19083
+ enableDeleteKeyClose?: boolean;
19084
+ /**
19085
+ * Whether Home/End keys jump to first/last navigable element.
19086
+ * @default false
19087
+ */
19088
+ enableHomeEndNavigation?: boolean;
19089
+ /**
19090
+ * Custom aria-label providers. Can be a static string or a function receiving context.
19091
+ */
19092
+ ariaLabels?: AriaLabelOptions;
19093
+ /**
19094
+ * Whether to announce tab changes via aria-live.
19095
+ * @default true
19096
+ */
19097
+ announceTabChanges?: boolean;
19098
+ /**
19099
+ * Focus behavior when a tab is closed via keyboard.
19100
+ * @default 'next'
19101
+ */
19102
+ focusOnCloseStrategy?: 'next' | 'previous' | 'active';
19103
+ };
19104
+
19105
+ /**
19106
+ * Elements that can be navigated in view tabs.
19107
+ */
19108
+ declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button';
19109
+
18919
19110
  /**
18920
19111
  * View throttling state.
18921
19112
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openfin/fdc3-api",
3
- "version": "44.101.2",
3
+ "version": "44.101.3",
4
4
  "description": "OpenFin fdc3 module utilities and types.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "private": false,