Application

Application

The standard application window that is rendered for a large variety of UI elements in Foundry VTT.

Constructor

(abstract) new Application(optionsopt)

Parameters:
Name Type Attributes Description
options ApplicationOptions <optional>

Configuration options which control how the application is rendered. Application subclasses may add additional supported options, but these base configurations are supported for all Applications. The values passed to the constructor are combined with the defaultOptions defined at the class level.

Members

(static) defaultOptions

Assign the default options configuration which is used by this Application class. The options and values defined in this object are merged with any provided option values which are passed to the constructor upon initialization. Application subclasses may include additional options which are specific to their usage.

_dragDrop :Array.<DragDrop>

DragDrop workflow handlers which are active for this Application

Type:

_element :jQuery

An internal reference to the HTML element this application renders

Type:
  • jQuery

_minimized :boolean

Track whether the Application is currently minimized

Type:
  • boolean

(protected) _priorState :number

See:
  • {Application.RENDER_STATES}

The prior render state of this Application. This allows for rendering logic to understand if the application is being rendered for the first time.

Type:
  • number

_scrollPositions :Object|null

Track the most recent scroll positions for any vertically scrolling containers

Type:
  • Object | null

_searchFilters :Array.<SearchFilter>

SearchFilter handlers which are active for this Application

Type:

(protected) _state :number

See:
  • {Application.RENDER_STATES}

The current render state of the Application

Type:
  • number

_tabs :Array.<Tabs>

Tab navigation handlers which are active for this Application

Type:

appId :number

The application ID is a unique incrementing integer which is used to identify every application window drawn by the VTT

Type:
  • number

element :jQuery|HTMLElement

Return the active application element, if it currently exists in the DOM

Type:
  • jQuery | HTMLElement

id :string

Return the CSS application ID which uniquely references this UI element

Type:
  • string

options :Object

The options provided to this application upon initialization

Type:
  • Object

popOut :boolean

Control the rendering style of the application. If popOut is true, the application is rendered in its own wrapper window, otherwise only the inner app content is rendered

Type:
  • boolean

position :Object

Track the current position and dimensions of the Application UI

Type:
  • Object

RENDER_STATES :number

The sequence of rendering states that track the Application life-cycle.

Type:
  • number

rendered :boolean

Return a flag for whether the Application instance is currently rendered

Type:
  • boolean

template :string

The path to the HTML template file which should be used to render the inner content of the app

Type:
  • string

title :string

An Application window should define its own title definition logic which may be dynamic depending on its data

Type:
  • string

Methods

(protected) _activateCoreListeners(html)

Activate required listeners which must be enabled on every Application. These are internal interactions which should not be overridden by downstream subclasses.

Parameters:
Name Type Description
html jQuery

(async, protected) _render(force, options) → {Promise.<void>}

An asynchronous inner function which handles the rendering of the Application

Parameters:
Name Type Default Description
force boolean false

Render and display the application even if it is not currently displayed.

options Object

New Application options which update the current values of the Application#options object

Returns:

A Promise that resolves to the Application once rendering is complete

Type
Promise.<void>

activateListeners(html)

After rendering, activate event listeners which provide interactivity for the Application. This is where user-defined Application subclasses should attach their event-handling logic.

Parameters:
Name Type Description
html jQuery

bringToTop()

Bring the application to the top of the rendering stack

(async) close() → {Promise.<void>}

Close the application and un-register references to it within UI mappings This function returns a Promise which resolves once the window closing animation concludes

Returns:

A Promise which resolves once the application is closed

Type
Promise.<void>

getData() → {Object|Promise}

An application should define the data object used to render its template. This function may either return an Object directly, or a Promise which resolves to an Object If undefined, the default implementation will return an empty object allowing only for rendering of static HTML

Returns:
Type
Object | Promise

(async) maximize() → {Promise.<void>}

Maximize the pop-out window, expanding it to its original size Take no action for applications which are not of the pop-out variety or are already maximized

Returns:

A Promise which resolves once the maximization action has completed

Type
Promise.<void>

(async) minimize() → {Promise.<void>}

Minimize the pop-out window, collapsing it to a small tab Take no action for applications which are not of the pop-out variety or apps which are already minimized

Returns:

A Promise which resolves once the minimization action has completed

Type
Promise.<void>

render(force, options) → {Application}

Render the Application by evaluating it's HTML template against the object of data provided by the getData method If the Application is rendered as a pop-out window, wrap the contained HTML in an outer frame with window controls

Parameters:
Name Type Default Description
force boolean false

Add the rendered application to the DOM if it is not already present. If false, the Application will only be re-rendered if it is already present.

options Object

Additional rendering options which are applied to customize the way that the Application is rendered in the DOM.

Properties
Name Type Attributes Default Description
left number <optional>

The left positioning attribute

top number <optional>

The top positioning attribute

width number <optional>

The rendered width

height number <optional>

The rendered height

scale number <optional>

The rendered transformation scale

focus boolean <optional>
false

Apply focus to the application, maximizing it and bringing it to the top of the vertical stack.

renderContext string <optional>

A context-providing string which suggests what event triggered the render

renderData object <optional>

The data change which motivated the render request

Returns:

The rendered Application instance

Type
Application

setPosition(left, top, width, height, scale) → {Object}

Set the application position and store it's new location.

Parameters:
Name Type Description
left number | null

The left offset position in pixels

top number | null

The top offset position in pixels

width number | null

The application width in pixels

height number | string | null

The application height in pixels

scale number | null

The application scale as a numeric factor where 1.0 is default

Returns:

The updated position object for the application containing the new values

Type
Object