Skip to main content

GleanWebSDK

Entry point for all Glean embedded widgets.

The SDK will dispatch a glean:ready event when the GleanWebSDK is ready to use, see below for examples of how to use the event.

Note that you only need this if you are integrating Glean via a deferred script tag.

Example

// example via plain JS
let isGleanReady = !!window.GleanWebSDK
window.addEventListener("glean:ready", () => {
isGleanReady = true
})

if (isGleanReady) {
// ready to use window.GleanWebSDK.<method>
}

// example via react hook
const subscribe = (callback: () => void) => {
window.addEventListener("glean:ready", callback)
return window.removeEventListener("glean:ready", callback)
}
const useIsGleanReady = useSyncExternalStore(subscribe, () => !!window.GleanWebSDK)

const YourComponent = () => {
const isGleanReady = useIsGleanReady()

useEffect(() => {
if (isGleanReady) {
// ready to use window.GleanWebSDK.<method>
}
}, [isGleanReady])
}

Properties

attach

attach: (element, options?) => WidgetHandle;

Attaches a complete, modal Glean Search to the given input element.

User interface

When the given input element is clicked, a modal dialog is immediately presented over the center of the page. It displays a more prominent search box and initial suggested documents and queries. As text is entered, autocomplete is performed, refining the suggestions. Upon pressing enter, the full search results are displayed in the modal. The modal is dismissed by clicking outside of its boundaries or on the close button. External links are opened in a new tab (target=_blank). If a non-empty query is passed in options the search modal will automatically open and display results for the query.

Usage

  1. Render a dummy search input box to the page with the desired styling.
  2. Pass a reference to it to this method along with appropriate options. This method will handle all user interaction.
  3. Handle the SearchOptions.onSearch callback if desired (e.g. for tracking purposes).

Parameters

ParameterTypeDescription
elementHTMLElementA focusable element such as a text input or contenteditable.
options?ModalSearchOptionsConfiguration options for the search modal.

Returns

WidgetHandle

An imperative handle (WidgetHandle) for Glean modal search.


attachAutocomplete

attachAutocomplete: (element, options) => WidgetHandle;

Parameters

ParameterType
elementHTMLElement
optionsSearchBoxOptions

Returns

WidgetHandle

Deprecated

Renamed renderSearchBox.


createGuestAuthProvider

createGuestAuthProvider: (options) => GuestAuthProvider;

Creates an auth provider to generate auth tokens for guest users. This is only supported if you are using Glean External Search.

Parameters

ParameterType
optionsGuestAuthProviderOptions

Returns

GuestAuthProvider


getChatOptionsFromUrl

getChatOptionsFromUrl: (deleteParams) => ChatUrlParams;

Attempts to read some configuration options for the embedded chat widget from the current URL of the embedding page. See ChatOptions for details.

Usage

renderChat(containerRef.current, { ...getChatOptionsFromUrl(), chatId: searchParams.get("chatId") ?? "", onChat: (chatId: string) => setSearchParams({ chatId }), onSearch: (query: string) => navigate({ pathname: '/search', search: new URLSearchParams({ query }).toString() }), });

Parameters

ParameterType
deleteParamsboolean

Returns

ChatUrlParams


openSidebar

openSidebar: (options) => Promise<void>;

Opens a sidebar with a search box, recommendations and results.

User interface

A sidebar with a search box slides in from the right of the page.

If SearchOptions.query is given then search results are displayed for the given query by default.

When a search result is clicked, it is opened in a new tab (target=_blank). The sidebar is closed when the close button within the sidebar is clicked or the escape key is pressed.

Parameters

ParameterTypeDescription
optionsSearchOptionsConfiguration options for the search results.

Returns

Promise<void>

Deprecated

will be removed in future versions.


renderChat

renderChat: (element, options) => ChatHandle;

Renders Glean AI chat inside the given container element

Usage

  1. Render a block level element in the page with the desired dimensions in the viewport.
  2. Pass it to this method along with appropriate options.

Parameters

ParameterTypeDescription
elementHTMLElementA containing HTML element such as a div to render the widget into. The container must be a block-level element with a non static position such as 'relative'.
optionsChatOptionsConfiguration options for the chat widget

Returns

ChatHandle

An imperative handle (ChatHandle) for Glean chat.


renderRecommendations

renderRecommendations: (element, options) => void;

Renders Glean recommendations inside the given container element

User Interface

The widget includes a Glean search box and shows contextual recommendations based on the current page.

On clicking the search box, autocomplete dropdown opens with suggestions based on the query being typed in. This may extend beyond the container bounds based on the suggestions. Upon pressing enter, the search results are displayed responsively in the container along with datasources tabs and facet filters. Search results, when clicked are opened in a new tab.

On the search page, a back button is shown beside the search box which can be used to navigate to the previous page.

Usage

  1. Render a block level element in the page with the desired dimensions in the viewport. Minimum height recommended is 600px.
  2. Pass it to this method along with appropriate options.

Parameters

ParameterTypeDescription
elementHTMLElementA containing HTML element such as a div to render the recommendations widget into. The container must be a block-level element with a non static position such as 'relative'.
optionsRecommendationsOptionsConfiguration options for the recommendations widget

Returns

void


renderSearchBox

renderSearchBox: (element, options) => WidgetHandle;

Displays Glean Search autocomplete inside the given container element.

User interface

A search box is rendered within the bounds of the provided container element. The box will take up the full space of the container minus any space required for the margins specified in the customization options SearchBoxOptions.searchBoxCustomizations. For example, if the search box should be 40px tall with a 5px margin on the top and bottom, the container should be 50px tall with verticalMargin: 5. If a boxShadow is specified, the margin should be large enough to display it.

Usage

  1. Render a container element to the page with the desired size.
  2. Pass it to this method along with appropriate options.
  3. Handle the SearchBoxOptions.onSearch callback as desired (e.g. by calling GleanWebSDK.renderSearchResults) and updating the page title/url.

Parameters

ParameterTypeDescription
elementHTMLElementA containing HTML element such as a div to render the search box into. The container must have both position:relative and display:block applied.
optionsSearchBoxOptionsConfiguration options for the search box.

Returns

WidgetHandle

An imperative handle (WidgetHandle) for Glean autocomplete.


renderSearchResults

renderSearchResults: (element, options) => void;

Renders Glean Search results into the given element.

User interface

The search results, datasource tabs and facet filters are displayed responsively to fill the entire element. The caller is responsible for rendering a search input box and handling callback events.

When a link that results in a new query is clicked (such as a spell correction), the TabbedSearchOptions.onSearch callback is invoked but the query is not automatically changed. When the user changes datasource tabs, the interface is updated and the TabbedSearchOptions.onDatasourceChange callback is invoked. When a search result is clicked, it is opened in a new tab (target=_blank).

Usage

  1. Render a block level element in the page with the desired dimensions in the viewport.
  2. Pass it to this method along with appropriate options.
  3. Respond to the TabbedSearchOptions.onSearch callback by invoking this render method with the same element and the new query. At the same time, it's usually appropriate to update any search box text, page title and URL.
  4. Optionally, respond to the TabbedSearchOptions.onDatasourceChange callback by updating the URL to preserve state.

Parameters

ParameterTypeDescription
elementHTMLElementA containing HTML element such as a div to render the search box into. The container must have both position:relative and display:block applied.
optionsTabbedSearchOptionsConfiguration options for the search results.

Returns

void


renderSettings

renderSettings: (element, options) => void;

Beta

Renders Glean settings inside the given container element

Usage

  1. Render a block level element in the page with the desired dimensions in the viewport. It is recommended that the width be at least 800px and the height be at least 600px.
  2. Pass it to this method along with appropriate options.

Parameters

ParameterTypeDescription
elementHTMLElementA containing HTML element such as a div to render the widget into. The container must be a block-level element with a non static position such as 'relative'.
optionsSettingsOptionsConfiguration options for the settings widget This API is experimental and may change at any time.

Returns

void