@openfin/fdc3-api 44.101.2 → 44.101.4

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
  */
@@ -9468,6 +9554,15 @@ declare type LogUploadOptions = {
9468
9554
  * Max file size limit in Megabytes for the logs archive.
9469
9555
  */
9470
9556
  sizeLimit?: number;
9557
+ /**
9558
+ * HTTP method used to upload the log archive.
9559
+ * Accepted values are `'POST'` and `'PUT'` (case-insensitive; values are normalised to uppercase before validation).
9560
+ * - `POST` sends a multipart `FormData` request (current behaviour).
9561
+ * - `PUT` sends the raw zip binary with an explicit `Content-Length` and no `Content-Type` header,
9562
+ * suitable for endpoints that expect a raw body (e.g. pre-signed upload URLs).
9563
+ * @defaultValue 'POST'
9564
+ */
9565
+ method?: 'POST' | 'PUT';
9471
9566
  };
9472
9567
 
9473
9568
  /**
@@ -10832,6 +10927,15 @@ declare namespace OpenFin {
10832
10927
  HeaderControlsContext,
10833
10928
  CreateLayoutOptions,
10834
10929
  MultiInstanceViewBehavior,
10930
+ LayoutAccessibilityOptions,
10931
+ ViewTabElements,
10932
+ ViewTabAccessibilityOptions,
10933
+ AccessibilityContext,
10934
+ TabAriaLabelContext,
10935
+ CloseButtonAriaLabelContext,
10936
+ AddTabButtonAriaLabelContext,
10937
+ AriaLabelOptions,
10938
+ LayoutSyncApi,
10835
10939
  PresetLayoutOptions_2 as PresetLayoutOptions,
10836
10940
  ResultBehavior,
10837
10941
  PopupBaseBehavior,
@@ -12563,6 +12667,38 @@ declare interface PlatformProvider {
12563
12667
  * @returns A promise resolving to `true` if the window should prevent the app from quitting, otherwise `false`.
12564
12668
  */
12565
12669
  shouldWindowPreventQuit(windowIdentity: OpenFin.Identity): Promise<boolean>;
12670
+ /**
12671
+ * Returns the platform's keyboard commands. Default implementation returns the manifest's
12672
+ * `platform.commands`. Override to inject additional default commands.
12673
+ * Called once during Platform.init; the result is cached for the lifetime
12674
+ * of the platform.
12675
+ *
12676
+ * @remarks
12677
+ * The returned commands are merged with core's built-in default commands
12678
+ * (unless `disableDefaultCommands` is set).
12679
+ * Overriders receive the raw manifest commands from `super` and can prepend
12680
+ * their own defaults — returned commands override default commands by command name.
12681
+ *
12682
+ * @example
12683
+ * ```js
12684
+ * const overrideCallback = (PlatformProvider) => {
12685
+ * class Override extends PlatformProvider {
12686
+ * getKeyboardCommands() {
12687
+ * const manifestCommands = super.getKeyboardCommands();
12688
+ * const myCommands = [{ command: 'myApp.search', keys: 'Ctrl+K' }];
12689
+ * return [
12690
+ * ...myCommands,
12691
+ * ...manifestCommands
12692
+ * ];
12693
+ * }
12694
+ * }
12695
+ * return new Override();
12696
+ * }
12697
+ *
12698
+ * fin.Platform.init({ overrideCallback });
12699
+ * ```
12700
+ */
12701
+ getKeyboardCommands(): OpenFin.ShortcutOverride[];
12566
12702
  /**
12567
12703
  * 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
12704
  */
@@ -15170,13 +15306,15 @@ declare class System extends EmitterBase<OpenFin.SystemEvent> {
15170
15306
  * * cookies: browser [cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)
15171
15307
  * * localStorage: browser data that can be used across sessions ([local storage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage))
15172
15308
  * * appcache: html5 [application cache](https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache)
15309
+ * * 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
15310
  * @example
15174
15311
  * ```js
15175
15312
  * const clearCacheOptions = {
15176
15313
  * appcache: true,
15177
15314
  * cache: true,
15178
15315
  * cookies: true,
15179
- * localStorage: true
15316
+ * localStorage: true,
15317
+ * windowState: true
15180
15318
  * };
15181
15319
  * fin.System.clearCache(clearCacheOptions).then(() => console.log('Cache cleared')).catch(err => console.log(err));
15182
15320
  * ```
@@ -15201,12 +15339,16 @@ declare class System extends EmitterBase<OpenFin.SystemEvent> {
15201
15339
  *
15202
15340
  * @param options - Optional configuration for what data to clear
15203
15341
  *
15342
+ * @remarks Set `windowState: true` to also clear data written for windows using `saveWindowState`.
15343
+ * After this data is cleared, previously saved bounds and state will not be restored until new state is written again.
15344
+ *
15204
15345
  * @example
15205
15346
  * ```js
15206
15347
  * // Clear only cookies and localStorage for a specific origin
15207
15348
  * await fin.System.clearCacheData({
15208
15349
  * dataTypes: ['cookies', 'localStorage'],
15209
- * origins: ['http://localhost:8081']
15350
+ * origins: ['http://localhost:8081'],
15351
+ * windowState: true
15210
15352
  * });
15211
15353
  *
15212
15354
  * // Clear everything except for a specific origin
@@ -16975,6 +17117,17 @@ declare type SystemShutdownHandler = (shutdownEvent: {
16975
17117
  proceed: () => void;
16976
17118
  }) => void;
16977
17119
 
17120
+ /**
17121
+ * @interface
17122
+ * Context for tab aria-label functions.
17123
+ */
17124
+ declare type TabAriaLabelContext = AccessibilityContext & {
17125
+ title: string;
17126
+ isActive: boolean;
17127
+ tabIndex: number;
17128
+ tabCount: number;
17129
+ };
17130
+
16978
17131
  /**
16979
17132
  * Generated when a Layout Tab Component was closed.
16980
17133
  * @interface
@@ -18449,6 +18602,53 @@ declare interface ViewStatuses {
18449
18602
  viewsNotPreventingUnload: Identity_4[];
18450
18603
  }
18451
18604
 
18605
+ /**
18606
+ * @interface
18607
+ * Accessibility options for view tab navigation.
18608
+ */
18609
+ declare type ViewTabAccessibilityOptions = {
18610
+ /**
18611
+ * Controls which elements are reachable via Tab key navigation.
18612
+ * Uses roving tabindex pattern - only one element focusable at a time.
18613
+ * @default ['active-tab', 'add-tab-button']
18614
+ */
18615
+ tabNavigation?: ViewTabElements[];
18616
+ /**
18617
+ * Controls which elements are navigable via Arrow keys.
18618
+ * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button']
18619
+ */
18620
+ arrowNavigation?: ViewTabElements[];
18621
+ /**
18622
+ * Whether Delete/Backspace keys close the focused tab.
18623
+ * @default false
18624
+ */
18625
+ enableDeleteKeyClose?: boolean;
18626
+ /**
18627
+ * Whether Home/End keys jump to first/last navigable element.
18628
+ * @default false
18629
+ */
18630
+ enableHomeEndNavigation?: boolean;
18631
+ /**
18632
+ * Custom aria-label providers. Can be a static string or a function receiving context.
18633
+ */
18634
+ ariaLabels?: AriaLabelOptions;
18635
+ /**
18636
+ * Whether to announce tab changes via aria-live.
18637
+ * @default true
18638
+ */
18639
+ announceTabChanges?: boolean;
18640
+ /**
18641
+ * Focus behavior when a tab is closed via keyboard.
18642
+ * @default 'next'
18643
+ */
18644
+ focusOnCloseStrategy?: 'next' | 'previous' | 'active';
18645
+ };
18646
+
18647
+ /**
18648
+ * Elements that can be navigated in view tabs.
18649
+ */
18650
+ declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button';
18651
+
18452
18652
  /**
18453
18653
  * View throttling state.
18454
18654
  *
@@ -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
  */
@@ -9468,6 +9554,15 @@ declare type LogUploadOptions = {
9468
9554
  * Max file size limit in Megabytes for the logs archive.
9469
9555
  */
9470
9556
  sizeLimit?: number;
9557
+ /**
9558
+ * HTTP method used to upload the log archive.
9559
+ * Accepted values are `'POST'` and `'PUT'` (case-insensitive; values are normalised to uppercase before validation).
9560
+ * - `POST` sends a multipart `FormData` request (current behaviour).
9561
+ * - `PUT` sends the raw zip binary with an explicit `Content-Length` and no `Content-Type` header,
9562
+ * suitable for endpoints that expect a raw body (e.g. pre-signed upload URLs).
9563
+ * @defaultValue 'POST'
9564
+ */
9565
+ method?: 'POST' | 'PUT';
9471
9566
  };
9472
9567
 
9473
9568
  /**
@@ -10832,6 +10927,15 @@ declare namespace OpenFin {
10832
10927
  HeaderControlsContext,
10833
10928
  CreateLayoutOptions,
10834
10929
  MultiInstanceViewBehavior,
10930
+ LayoutAccessibilityOptions,
10931
+ ViewTabElements,
10932
+ ViewTabAccessibilityOptions,
10933
+ AccessibilityContext,
10934
+ TabAriaLabelContext,
10935
+ CloseButtonAriaLabelContext,
10936
+ AddTabButtonAriaLabelContext,
10937
+ AriaLabelOptions,
10938
+ LayoutSyncApi,
10835
10939
  PresetLayoutOptions_2 as PresetLayoutOptions,
10836
10940
  ResultBehavior,
10837
10941
  PopupBaseBehavior,
@@ -12563,6 +12667,38 @@ declare interface PlatformProvider {
12563
12667
  * @returns A promise resolving to `true` if the window should prevent the app from quitting, otherwise `false`.
12564
12668
  */
12565
12669
  shouldWindowPreventQuit(windowIdentity: OpenFin.Identity): Promise<boolean>;
12670
+ /**
12671
+ * Returns the platform's keyboard commands. Default implementation returns the manifest's
12672
+ * `platform.commands`. Override to inject additional default commands.
12673
+ * Called once during Platform.init; the result is cached for the lifetime
12674
+ * of the platform.
12675
+ *
12676
+ * @remarks
12677
+ * The returned commands are merged with core's built-in default commands
12678
+ * (unless `disableDefaultCommands` is set).
12679
+ * Overriders receive the raw manifest commands from `super` and can prepend
12680
+ * their own defaults — returned commands override default commands by command name.
12681
+ *
12682
+ * @example
12683
+ * ```js
12684
+ * const overrideCallback = (PlatformProvider) => {
12685
+ * class Override extends PlatformProvider {
12686
+ * getKeyboardCommands() {
12687
+ * const manifestCommands = super.getKeyboardCommands();
12688
+ * const myCommands = [{ command: 'myApp.search', keys: 'Ctrl+K' }];
12689
+ * return [
12690
+ * ...myCommands,
12691
+ * ...manifestCommands
12692
+ * ];
12693
+ * }
12694
+ * }
12695
+ * return new Override();
12696
+ * }
12697
+ *
12698
+ * fin.Platform.init({ overrideCallback });
12699
+ * ```
12700
+ */
12701
+ getKeyboardCommands(): OpenFin.ShortcutOverride[];
12566
12702
  /**
12567
12703
  * 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
12704
  */
@@ -15170,13 +15306,15 @@ declare class System extends EmitterBase<OpenFin.SystemEvent> {
15170
15306
  * * cookies: browser [cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)
15171
15307
  * * localStorage: browser data that can be used across sessions ([local storage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage))
15172
15308
  * * appcache: html5 [application cache](https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache)
15309
+ * * 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
15310
  * @example
15174
15311
  * ```js
15175
15312
  * const clearCacheOptions = {
15176
15313
  * appcache: true,
15177
15314
  * cache: true,
15178
15315
  * cookies: true,
15179
- * localStorage: true
15316
+ * localStorage: true,
15317
+ * windowState: true
15180
15318
  * };
15181
15319
  * fin.System.clearCache(clearCacheOptions).then(() => console.log('Cache cleared')).catch(err => console.log(err));
15182
15320
  * ```
@@ -15201,12 +15339,16 @@ declare class System extends EmitterBase<OpenFin.SystemEvent> {
15201
15339
  *
15202
15340
  * @param options - Optional configuration for what data to clear
15203
15341
  *
15342
+ * @remarks Set `windowState: true` to also clear data written for windows using `saveWindowState`.
15343
+ * After this data is cleared, previously saved bounds and state will not be restored until new state is written again.
15344
+ *
15204
15345
  * @example
15205
15346
  * ```js
15206
15347
  * // Clear only cookies and localStorage for a specific origin
15207
15348
  * await fin.System.clearCacheData({
15208
15349
  * dataTypes: ['cookies', 'localStorage'],
15209
- * origins: ['http://localhost:8081']
15350
+ * origins: ['http://localhost:8081'],
15351
+ * windowState: true
15210
15352
  * });
15211
15353
  *
15212
15354
  * // Clear everything except for a specific origin
@@ -16975,6 +17117,17 @@ declare type SystemShutdownHandler = (shutdownEvent: {
16975
17117
  proceed: () => void;
16976
17118
  }) => void;
16977
17119
 
17120
+ /**
17121
+ * @interface
17122
+ * Context for tab aria-label functions.
17123
+ */
17124
+ declare type TabAriaLabelContext = AccessibilityContext & {
17125
+ title: string;
17126
+ isActive: boolean;
17127
+ tabIndex: number;
17128
+ tabCount: number;
17129
+ };
17130
+
16978
17131
  /**
16979
17132
  * Generated when a Layout Tab Component was closed.
16980
17133
  * @interface
@@ -18449,6 +18602,53 @@ declare interface ViewStatuses {
18449
18602
  viewsNotPreventingUnload: Identity_4[];
18450
18603
  }
18451
18604
 
18605
+ /**
18606
+ * @interface
18607
+ * Accessibility options for view tab navigation.
18608
+ */
18609
+ declare type ViewTabAccessibilityOptions = {
18610
+ /**
18611
+ * Controls which elements are reachable via Tab key navigation.
18612
+ * Uses roving tabindex pattern - only one element focusable at a time.
18613
+ * @default ['active-tab', 'add-tab-button']
18614
+ */
18615
+ tabNavigation?: ViewTabElements[];
18616
+ /**
18617
+ * Controls which elements are navigable via Arrow keys.
18618
+ * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button']
18619
+ */
18620
+ arrowNavigation?: ViewTabElements[];
18621
+ /**
18622
+ * Whether Delete/Backspace keys close the focused tab.
18623
+ * @default false
18624
+ */
18625
+ enableDeleteKeyClose?: boolean;
18626
+ /**
18627
+ * Whether Home/End keys jump to first/last navigable element.
18628
+ * @default false
18629
+ */
18630
+ enableHomeEndNavigation?: boolean;
18631
+ /**
18632
+ * Custom aria-label providers. Can be a static string or a function receiving context.
18633
+ */
18634
+ ariaLabels?: AriaLabelOptions;
18635
+ /**
18636
+ * Whether to announce tab changes via aria-live.
18637
+ * @default true
18638
+ */
18639
+ announceTabChanges?: boolean;
18640
+ /**
18641
+ * Focus behavior when a tab is closed via keyboard.
18642
+ * @default 'next'
18643
+ */
18644
+ focusOnCloseStrategy?: 'next' | 'previous' | 'active';
18645
+ };
18646
+
18647
+ /**
18648
+ * Elements that can be navigated in view tabs.
18649
+ */
18650
+ declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button';
18651
+
18452
18652
  /**
18453
18653
  * View throttling state.
18454
18654
  *
@@ -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
  */
@@ -9468,6 +9554,15 @@ declare type LogUploadOptions = {
9468
9554
  * Max file size limit in Megabytes for the logs archive.
9469
9555
  */
9470
9556
  sizeLimit?: number;
9557
+ /**
9558
+ * HTTP method used to upload the log archive.
9559
+ * Accepted values are `'POST'` and `'PUT'` (case-insensitive; values are normalised to uppercase before validation).
9560
+ * - `POST` sends a multipart `FormData` request (current behaviour).
9561
+ * - `PUT` sends the raw zip binary with an explicit `Content-Length` and no `Content-Type` header,
9562
+ * suitable for endpoints that expect a raw body (e.g. pre-signed upload URLs).
9563
+ * @defaultValue 'POST'
9564
+ */
9565
+ method?: 'POST' | 'PUT';
9471
9566
  };
9472
9567
 
9473
9568
  /**
@@ -10832,6 +10927,15 @@ declare namespace OpenFin {
10832
10927
  HeaderControlsContext,
10833
10928
  CreateLayoutOptions,
10834
10929
  MultiInstanceViewBehavior,
10930
+ LayoutAccessibilityOptions,
10931
+ ViewTabElements,
10932
+ ViewTabAccessibilityOptions,
10933
+ AccessibilityContext,
10934
+ TabAriaLabelContext,
10935
+ CloseButtonAriaLabelContext,
10936
+ AddTabButtonAriaLabelContext,
10937
+ AriaLabelOptions,
10938
+ LayoutSyncApi,
10835
10939
  PresetLayoutOptions_2 as PresetLayoutOptions,
10836
10940
  ResultBehavior,
10837
10941
  PopupBaseBehavior,
@@ -12563,6 +12667,38 @@ declare interface PlatformProvider {
12563
12667
  * @returns A promise resolving to `true` if the window should prevent the app from quitting, otherwise `false`.
12564
12668
  */
12565
12669
  shouldWindowPreventQuit(windowIdentity: OpenFin.Identity): Promise<boolean>;
12670
+ /**
12671
+ * Returns the platform's keyboard commands. Default implementation returns the manifest's
12672
+ * `platform.commands`. Override to inject additional default commands.
12673
+ * Called once during Platform.init; the result is cached for the lifetime
12674
+ * of the platform.
12675
+ *
12676
+ * @remarks
12677
+ * The returned commands are merged with core's built-in default commands
12678
+ * (unless `disableDefaultCommands` is set).
12679
+ * Overriders receive the raw manifest commands from `super` and can prepend
12680
+ * their own defaults — returned commands override default commands by command name.
12681
+ *
12682
+ * @example
12683
+ * ```js
12684
+ * const overrideCallback = (PlatformProvider) => {
12685
+ * class Override extends PlatformProvider {
12686
+ * getKeyboardCommands() {
12687
+ * const manifestCommands = super.getKeyboardCommands();
12688
+ * const myCommands = [{ command: 'myApp.search', keys: 'Ctrl+K' }];
12689
+ * return [
12690
+ * ...myCommands,
12691
+ * ...manifestCommands
12692
+ * ];
12693
+ * }
12694
+ * }
12695
+ * return new Override();
12696
+ * }
12697
+ *
12698
+ * fin.Platform.init({ overrideCallback });
12699
+ * ```
12700
+ */
12701
+ getKeyboardCommands(): OpenFin.ShortcutOverride[];
12566
12702
  /**
12567
12703
  * 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
12704
  */
@@ -15170,13 +15306,15 @@ declare class System extends EmitterBase<OpenFin.SystemEvent> {
15170
15306
  * * cookies: browser [cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)
15171
15307
  * * localStorage: browser data that can be used across sessions ([local storage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage))
15172
15308
  * * appcache: html5 [application cache](https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache)
15309
+ * * 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
15310
  * @example
15174
15311
  * ```js
15175
15312
  * const clearCacheOptions = {
15176
15313
  * appcache: true,
15177
15314
  * cache: true,
15178
15315
  * cookies: true,
15179
- * localStorage: true
15316
+ * localStorage: true,
15317
+ * windowState: true
15180
15318
  * };
15181
15319
  * fin.System.clearCache(clearCacheOptions).then(() => console.log('Cache cleared')).catch(err => console.log(err));
15182
15320
  * ```
@@ -15201,12 +15339,16 @@ declare class System extends EmitterBase<OpenFin.SystemEvent> {
15201
15339
  *
15202
15340
  * @param options - Optional configuration for what data to clear
15203
15341
  *
15342
+ * @remarks Set `windowState: true` to also clear data written for windows using `saveWindowState`.
15343
+ * After this data is cleared, previously saved bounds and state will not be restored until new state is written again.
15344
+ *
15204
15345
  * @example
15205
15346
  * ```js
15206
15347
  * // Clear only cookies and localStorage for a specific origin
15207
15348
  * await fin.System.clearCacheData({
15208
15349
  * dataTypes: ['cookies', 'localStorage'],
15209
- * origins: ['http://localhost:8081']
15350
+ * origins: ['http://localhost:8081'],
15351
+ * windowState: true
15210
15352
  * });
15211
15353
  *
15212
15354
  * // Clear everything except for a specific origin
@@ -16975,6 +17117,17 @@ declare type SystemShutdownHandler = (shutdownEvent: {
16975
17117
  proceed: () => void;
16976
17118
  }) => void;
16977
17119
 
17120
+ /**
17121
+ * @interface
17122
+ * Context for tab aria-label functions.
17123
+ */
17124
+ declare type TabAriaLabelContext = AccessibilityContext & {
17125
+ title: string;
17126
+ isActive: boolean;
17127
+ tabIndex: number;
17128
+ tabCount: number;
17129
+ };
17130
+
16978
17131
  /**
16979
17132
  * Generated when a Layout Tab Component was closed.
16980
17133
  * @interface
@@ -18449,6 +18602,53 @@ declare interface ViewStatuses {
18449
18602
  viewsNotPreventingUnload: Identity_4[];
18450
18603
  }
18451
18604
 
18605
+ /**
18606
+ * @interface
18607
+ * Accessibility options for view tab navigation.
18608
+ */
18609
+ declare type ViewTabAccessibilityOptions = {
18610
+ /**
18611
+ * Controls which elements are reachable via Tab key navigation.
18612
+ * Uses roving tabindex pattern - only one element focusable at a time.
18613
+ * @default ['active-tab', 'add-tab-button']
18614
+ */
18615
+ tabNavigation?: ViewTabElements[];
18616
+ /**
18617
+ * Controls which elements are navigable via Arrow keys.
18618
+ * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button']
18619
+ */
18620
+ arrowNavigation?: ViewTabElements[];
18621
+ /**
18622
+ * Whether Delete/Backspace keys close the focused tab.
18623
+ * @default false
18624
+ */
18625
+ enableDeleteKeyClose?: boolean;
18626
+ /**
18627
+ * Whether Home/End keys jump to first/last navigable element.
18628
+ * @default false
18629
+ */
18630
+ enableHomeEndNavigation?: boolean;
18631
+ /**
18632
+ * Custom aria-label providers. Can be a static string or a function receiving context.
18633
+ */
18634
+ ariaLabels?: AriaLabelOptions;
18635
+ /**
18636
+ * Whether to announce tab changes via aria-live.
18637
+ * @default true
18638
+ */
18639
+ announceTabChanges?: boolean;
18640
+ /**
18641
+ * Focus behavior when a tab is closed via keyboard.
18642
+ * @default 'next'
18643
+ */
18644
+ focusOnCloseStrategy?: 'next' | 'previous' | 'active';
18645
+ };
18646
+
18647
+ /**
18648
+ * Elements that can be navigated in view tabs.
18649
+ */
18650
+ declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button';
18651
+
18452
18652
  /**
18453
18653
  * View throttling state.
18454
18654
  *
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
  */
@@ -9777,6 +9863,15 @@ declare type LogUploadOptions = {
9777
9863
  * Max file size limit in Megabytes for the logs archive.
9778
9864
  */
9779
9865
  sizeLimit?: number;
9866
+ /**
9867
+ * HTTP method used to upload the log archive.
9868
+ * Accepted values are `'POST'` and `'PUT'` (case-insensitive; values are normalised to uppercase before validation).
9869
+ * - `POST` sends a multipart `FormData` request (current behaviour).
9870
+ * - `PUT` sends the raw zip binary with an explicit `Content-Length` and no `Content-Type` header,
9871
+ * suitable for endpoints that expect a raw body (e.g. pre-signed upload URLs).
9872
+ * @defaultValue 'POST'
9873
+ */
9874
+ method?: 'POST' | 'PUT';
9780
9875
  };
9781
9876
 
9782
9877
  /**
@@ -11166,6 +11261,15 @@ declare namespace OpenFin {
11166
11261
  HeaderControlsContext,
11167
11262
  CreateLayoutOptions,
11168
11263
  MultiInstanceViewBehavior,
11264
+ LayoutAccessibilityOptions,
11265
+ ViewTabElements,
11266
+ ViewTabAccessibilityOptions,
11267
+ AccessibilityContext,
11268
+ TabAriaLabelContext,
11269
+ CloseButtonAriaLabelContext,
11270
+ AddTabButtonAriaLabelContext,
11271
+ AriaLabelOptions,
11272
+ LayoutSyncApi,
11169
11273
  PresetLayoutOptions_2 as PresetLayoutOptions,
11170
11274
  ResultBehavior,
11171
11275
  PopupBaseBehavior,
@@ -12980,6 +13084,38 @@ declare interface PlatformProvider {
12980
13084
  * @returns A promise resolving to `true` if the window should prevent the app from quitting, otherwise `false`.
12981
13085
  */
12982
13086
  shouldWindowPreventQuit(windowIdentity: OpenFin.Identity): Promise<boolean>;
13087
+ /**
13088
+ * Returns the platform's keyboard commands. Default implementation returns the manifest's
13089
+ * `platform.commands`. Override to inject additional default commands.
13090
+ * Called once during Platform.init; the result is cached for the lifetime
13091
+ * of the platform.
13092
+ *
13093
+ * @remarks
13094
+ * The returned commands are merged with core's built-in default commands
13095
+ * (unless `disableDefaultCommands` is set).
13096
+ * Overriders receive the raw manifest commands from `super` and can prepend
13097
+ * their own defaults — returned commands override default commands by command name.
13098
+ *
13099
+ * @example
13100
+ * ```js
13101
+ * const overrideCallback = (PlatformProvider) => {
13102
+ * class Override extends PlatformProvider {
13103
+ * getKeyboardCommands() {
13104
+ * const manifestCommands = super.getKeyboardCommands();
13105
+ * const myCommands = [{ command: 'myApp.search', keys: 'Ctrl+K' }];
13106
+ * return [
13107
+ * ...myCommands,
13108
+ * ...manifestCommands
13109
+ * ];
13110
+ * }
13111
+ * }
13112
+ * return new Override();
13113
+ * }
13114
+ *
13115
+ * fin.Platform.init({ overrideCallback });
13116
+ * ```
13117
+ */
13118
+ getKeyboardCommands(): OpenFin.ShortcutOverride[];
12983
13119
  /**
12984
13120
  * 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
13121
  */
@@ -15593,13 +15729,15 @@ declare class System extends EmitterBase<OpenFin.SystemEvent> {
15593
15729
  * * cookies: browser [cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)
15594
15730
  * * localStorage: browser data that can be used across sessions ([local storage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage))
15595
15731
  * * appcache: html5 [application cache](https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache)
15732
+ * * 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
15733
  * @example
15597
15734
  * ```js
15598
15735
  * const clearCacheOptions = {
15599
15736
  * appcache: true,
15600
15737
  * cache: true,
15601
15738
  * cookies: true,
15602
- * localStorage: true
15739
+ * localStorage: true,
15740
+ * windowState: true
15603
15741
  * };
15604
15742
  * fin.System.clearCache(clearCacheOptions).then(() => console.log('Cache cleared')).catch(err => console.log(err));
15605
15743
  * ```
@@ -15624,12 +15762,16 @@ declare class System extends EmitterBase<OpenFin.SystemEvent> {
15624
15762
  *
15625
15763
  * @param options - Optional configuration for what data to clear
15626
15764
  *
15765
+ * @remarks Set `windowState: true` to also clear data written for windows using `saveWindowState`.
15766
+ * After this data is cleared, previously saved bounds and state will not be restored until new state is written again.
15767
+ *
15627
15768
  * @example
15628
15769
  * ```js
15629
15770
  * // Clear only cookies and localStorage for a specific origin
15630
15771
  * await fin.System.clearCacheData({
15631
15772
  * dataTypes: ['cookies', 'localStorage'],
15632
- * origins: ['http://localhost:8081']
15773
+ * origins: ['http://localhost:8081'],
15774
+ * windowState: true
15633
15775
  * });
15634
15776
  *
15635
15777
  * // Clear everything except for a specific origin
@@ -17404,6 +17546,17 @@ declare type SystemShutdownHandler = (shutdownEvent: {
17404
17546
  proceed: () => void;
17405
17547
  }) => void;
17406
17548
 
17549
+ /**
17550
+ * @interface
17551
+ * Context for tab aria-label functions.
17552
+ */
17553
+ declare type TabAriaLabelContext = AccessibilityContext & {
17554
+ title: string;
17555
+ isActive: boolean;
17556
+ tabIndex: number;
17557
+ tabCount: number;
17558
+ };
17559
+
17407
17560
  /**
17408
17561
  * Generated when a Layout Tab Component was closed.
17409
17562
  * @interface
@@ -18916,6 +19069,53 @@ declare interface ViewStatuses {
18916
19069
  viewsNotPreventingUnload: Identity_4[];
18917
19070
  }
18918
19071
 
19072
+ /**
19073
+ * @interface
19074
+ * Accessibility options for view tab navigation.
19075
+ */
19076
+ declare type ViewTabAccessibilityOptions = {
19077
+ /**
19078
+ * Controls which elements are reachable via Tab key navigation.
19079
+ * Uses roving tabindex pattern - only one element focusable at a time.
19080
+ * @default ['active-tab', 'add-tab-button']
19081
+ */
19082
+ tabNavigation?: ViewTabElements[];
19083
+ /**
19084
+ * Controls which elements are navigable via Arrow keys.
19085
+ * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button']
19086
+ */
19087
+ arrowNavigation?: ViewTabElements[];
19088
+ /**
19089
+ * Whether Delete/Backspace keys close the focused tab.
19090
+ * @default false
19091
+ */
19092
+ enableDeleteKeyClose?: boolean;
19093
+ /**
19094
+ * Whether Home/End keys jump to first/last navigable element.
19095
+ * @default false
19096
+ */
19097
+ enableHomeEndNavigation?: boolean;
19098
+ /**
19099
+ * Custom aria-label providers. Can be a static string or a function receiving context.
19100
+ */
19101
+ ariaLabels?: AriaLabelOptions;
19102
+ /**
19103
+ * Whether to announce tab changes via aria-live.
19104
+ * @default true
19105
+ */
19106
+ announceTabChanges?: boolean;
19107
+ /**
19108
+ * Focus behavior when a tab is closed via keyboard.
19109
+ * @default 'next'
19110
+ */
19111
+ focusOnCloseStrategy?: 'next' | 'previous' | 'active';
19112
+ };
19113
+
19114
+ /**
19115
+ * Elements that can be navigated in view tabs.
19116
+ */
19117
+ declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button';
19118
+
18919
19119
  /**
18920
19120
  * View throttling state.
18921
19121
  *
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.4",
4
4
  "description": "OpenFin fdc3 module utilities and types.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "private": false,