Newer Version Available

This content describes an older version of this product. View Latest

disableTabClose() for Lightning Experience

Prevents a workspace tab or subtab from closing. This method removes the close button from a tab or subtab, and disables the keyboard shortcuts that close tabs and subtabs. This method works only in Lightning console apps.

Arguments

The method provides the same argument for both Aura Components and Lightning Web Components (LWC).

If you’re using the LWC Workspace API (Beta), Lightning Web Security must be enabled in the Salesforce org. LWC Workspace API is a Beta Service. Customer may opt to try such Beta Service in its sole discretion. Any use of the Beta Service is subject to the applicable Beta Services Terms provided at Agreements and Terms.

Note

Name Type Description
tabId string The ID of the workspace tab or subtab to disable tab close for.
disabled boolean Specifies whether to disable tab close.

disableTabClose() doesn’t prevent the browser from refreshing or closing the browser tab.

Note

LWC Sample Code

This component has a function that opens a tab using a page reference and then prevents it from being closed.

1import { LightningElement } from 'lwc';
2import { openTab, disableTabClose } from 'lightning/platformWorkspaceApi';
3
4export default class MyComponent extends LightningElement {
5
6   focusNewTab(event) {
7       openTab({
8            url: '#/sObject/001R0000003HgssIAC/view',
9            label: 'Global Media'
10       }).then((tabId) => {
11            disableTabClose(tabId, true);
12       }).catch((error) => {
13            console.log(error);
14       });
15   }
16}

Aura Components Sample Code

This component has a button that, when pressed, disables the ability to close the currently focused tab.

Component code:

1<aura:component implements="flexipage:availableForAllPageTypes" access="global">
2    <lightning:workspaceAPI aura:id="workspace" />
3    <lightning:button label="Disable Close Focused Tab" onclick="{! c.disableCloseFocusedTab }" />
4</aura:component>

Controller code:

1({
2    disableCloseFocusedTab : function(component, event, helper) {
3        var workspaceAPI = component.find("workspace");
4        workspaceAPI.getFocusedTabInfo().then(function(response) {
5            var focusedTabId = response.tabId;
6            workspaceAPI.disableTabClose({
7                tabId: focusedTabId,
8                disabled: true
9        })
10        .then(function(tabInfo) {
11            console.log(tabInfo);
12        })
13        .catch(function(error) {
14            console.log(error);
15        });
16    })
17    .catch(function(error) {
18        console.log(error);
19    });
20    }
21})

Response

This method returns a promise that, upon success, resolves to a tabInfo object representing the focused tab. A tabInfo object is a JSON array of information about a workspace tab, with nested arrays of information on each subtab. This is the structure of a tabInfo object.
1{
2     tabId: string,
3     url: string (URL),
4     pinned: boolean,
5     closeable: boolean,
6     title: string,
7     icon: string (SLDS iconKey),
8     iconAlt: string,
9     customTitle: string (optional),
10     customIcon: string (optional),
11     customIconAlt: string (optional),
12     highlighted: boolean,
13     pageReference: object,
14     isSubtab: boolean,
15     parentTabId: string,
16     subtabs: [
17         {
18             tabId: string,
19             url: string (URL),
20             pinned: boolean,
21             closeable: boolean,
22             title: string,
23             icon: string (SLDS iconKey),
24             iconAlt: string,
25             customTitle: string (optional),
26             customIcon: string (optional),
27             customIconAlt: string (optional),
28             highlighted: boolean,
29             pageReference: object,
30             isSubtab: boolean,
31             parentTabId: string,
32             focused: boolean,
33             recordId: string,
34          },
35           ... 
36     ],
37     focused: boolean,
38     recordId: string
39}