LWC Workspace API
Raptem kilka miesięcy temu na łamach Coffee & Force narzekałem, że Salesforce nie spieszy się z implementacją funkcjonalności, postulowanych przez użytkowników, co wymusza stosowanie rozmaitych workaroundów i obejść, a kilka dni temu spotkała mnie niespodzianka – wprowadzone zostało Workspace API dla Lightning Web Components.
LWC Workspace API póki co jest w wersji Beta, dostępne od release’u Winter 2024, więc chcąc je przetestować, musimy utworzyć Pre-Release Org, co można zrobić pod adresem https://www.salesforce.com/form/signup/prerelease-winter24/. Dodatkowo upewnijmy się, że mamy włączone Lightning Web Security, co można zrobić w Setup ⇒ Security ⇒ Session Settings.
W pliku js musimy zaimportować moduł lightning/platformWorkspaceApi, dający nam dostęp do metod, adapterów oraz interfejsów API opartych na eventach za pośrednictwem Lightning Message Service.
import {
EnclosingTabId,
openTab,
openSubtab,
getTabInfo
} from "lightning/platformWorkspaceApi";
Dostęp do identyfikatora aktualnego taba jest dostępny poprzez adapter wire:
@wire(EnclosingTabId) tabId;
Jest też szereg kanałów LMS, które możemy zasubskrybować, żeby otrzymywać eventy np. o zamknięciu, otwarciu taba, zmiany focusa, itp.
lightning__tabClosed
lightning__tabCreated
lightning__tabFocused
W przykładowym repo znajdziecie przykład użycia nowego API z wykorzystaniem zarówno metod, adapterów, jak i kanałów LMS: https://github.com/maciejkrolpl/LWC-Workspace-API
Dokumentacja znajduje się pod linkami:
https://developer.salesforce.com/docs/atlas.en-us.246.0.api_console.meta/api_console/sforce_api_console_js_lightning_syntax.htm
https://developer.salesforce.com/docs/atlas.en-us.246.0.api_console.meta/api_console/sforce_api_console_methods_lightning_workspaceAPI.htm