Newer Version Available
disableTabClose() for Lightning Experience
Arguments
The method provides the same argument for both Aura Components and Lightning Web Components (LWC).
| 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. |
LWC Sample Code
This component has a function that opens a tab using a page reference and then prevents it from being closed. When the openTab() method resolves successfully, it returns the tabInfo object. The const { tabId } syntax destructures the tabInfo object and binds the tabInfo.tabId value on the tabId variable. disableTabClose() uses this tabId value to prevent the tab from closing.
1import { LightningElement } from 'lwc';
2import { openTab, disableTabClose, IsConsoleNavigation } from 'lightning/platformWorkspaceApi';
3
4export default class DisableTabCloseExample extends LightningElement {
5
6 async handleOpenAndDisable() {
7 if (!this.isConsoleNavigation) {
8 return;
9 }
10 try {
11 const { tabId } = await openTab({
12 pageReference: {
13 "type": "standard__objectPage",
14 "attributes": {
15 "objectApiName":"Account",
16 "actionName":"home"
17 },
18 },
19 });
20 await disableTabClose(tabId, true);
21 } catch (error) {
22 // handle error
23 }
24 }
25}For another example that uses disableTabClose(), see the workspaceAPIDisableTabClose component in the lwc-recipes repo.
To make your component available for use in a Lightning console app, specify the lightning__AppPage target in the component’s configuration file.
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
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}