Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions docs/api-reference/core/widget.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ You may find many ready-to-use widgets in the `@deck.gl/widgets` module.
A widget is expected to implement the `Widget` interface. Here is a custom widget that shows a spinner while layers are loading:

```ts
import {Widget} from '@deck.gl/core';
import {Deck, Widget} from '@deck.gl/core';

class LoadingIndicator implements Widget {
element?: HTMLDivElement;
Expand All @@ -39,12 +39,14 @@ class LoadingIndicator implements Widget {
}
}

deckgl.addWidget(new LoadingIndicator({size: 48}));
new Deck({
widgets: [new LoadingIndicator({size: 48})]
});
```

## Widget Interface

When a widget instance is added to Deck, the user can optionally specify a `viewId` that it is attached to (default `null`). If assigned, this widget will only respond to events occured inside the specific view that matches this id.
When a widget instance is added to Deck, the user can optionally specify a `viewId` that it is attached to (default `null`). If assigned, this widget will only respond to events occurred inside the specific view that matches this id.

### Members

Expand Down
4 changes: 2 additions & 2 deletions docs/api-reference/widgets/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,11 @@ new FullscreenWidget({});

```html
<script src="https://unpkg.com/deck.gl@^9.0.0/dist.min.js"></script>
<link src="https://unpkg.com/deck.gl@^9.0.0/dist/stylesheet.css" rel='stylesheet' />
<link href="https://unpkg.com/deck.gl@^9.0.0/dist/stylesheet.css" rel='stylesheet' />
<!-- or -->
<script src="https://unpkg.com/@deck.gl/core@^9.0.0/dist.min.js"></script>
<script src="https://unpkg.com/@deck.gl/widgets@^9.0.0/dist.min.js"></script>
<link src="https://unpkg.com/@deck.gl/widgets@^9.0.0/dist/stylesheet.css" rel='stylesheet' />
<link href="https://unpkg.com/@deck.gl/widgets@^9.0.0/dist/stylesheet.css" rel='stylesheet' />
```

```js
Expand Down
2 changes: 2 additions & 0 deletions modules/main/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -195,3 +195,5 @@ export type {
export type {MVTLayerProps, QuadkeyLayerProps, TileLayerProps} from '@deck.gl/geo-layers';

export type {DeckGLProps, DeckGLRef, DeckGLContextValue} from '@deck.gl/react';

export type {FullscreenWidgetProps, ZoomWidgetProps, CompassWidgetProps} from '@deck.gl/widgets';
7 changes: 5 additions & 2 deletions modules/widgets/src/compass-widget.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,11 @@ import {
import type {Deck, Viewport, Widget, WidgetPlacement} from '@deck.gl/core';
import {render} from 'preact';

interface CompassWidgetProps {
export type CompassWidgetProps = {
id?: string;
/**
* Widget positioning within the view. Default 'top-left'.
*/
placement?: WidgetPlacement;
/**
* View to attach to and interact with. Required when using multiple views.
Expand All @@ -37,7 +40,7 @@ interface CompassWidgetProps {
* Additional CSS class.
*/
className?: string;
}
};

export class CompassWidget implements Widget<CompassWidgetProps> {
id = 'compass';
Expand Down
7 changes: 5 additions & 2 deletions modules/widgets/src/fullscreen-widget.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,11 @@ import type {Deck, Widget, WidgetPlacement} from '@deck.gl/core';
import {render} from 'preact';
import {IconButton} from './components';

interface FullscreenWidgetProps {
export type FullscreenWidgetProps = {
id?: string;
/**
* Widget positioning within the view. Default 'top-left'.
*/
placement?: WidgetPlacement;
/**
* A [compatible DOM element](https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen#Compatible_elements) which should be made full screen.
Expand All @@ -37,7 +40,7 @@ interface FullscreenWidgetProps {
* Additional CSS class.
*/
className?: string;
}
};

export class FullscreenWidget implements Widget<FullscreenWidgetProps> {
id = 'fullscreen';
Expand Down
4 changes: 4 additions & 0 deletions modules/widgets/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,8 @@ export {FullscreenWidget} from './fullscreen-widget';
export {CompassWidget} from './compass-widget';
export {ZoomWidget} from './zoom-widget';

export type {FullscreenWidgetProps} from './fullscreen-widget';
export type {CompassWidgetProps} from './compass-widget';
export type {ZoomWidgetProps} from './zoom-widget';

export * from './themes';
7 changes: 5 additions & 2 deletions modules/widgets/src/zoom-widget.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,11 @@ import type {Deck, Viewport, Widget, WidgetPlacement} from '@deck.gl/core';
import {render} from 'preact';
import {ButtonGroup, GroupedIconButton} from './components';

interface ZoomWidgetProps {
export type ZoomWidgetProps = {
id?: string;
/**
* Widget positioning within the view. Default 'top-left'.
*/
placement?: WidgetPlacement;
/**
* View to attach to and interact with. Required when using multiple views.
Expand Down Expand Up @@ -44,7 +47,7 @@ interface ZoomWidgetProps {
* Additional CSS class.
*/
className?: string;
}
};

export class ZoomWidget implements Widget<ZoomWidgetProps> {
id = 'zoom';
Expand Down