# apostrophe-widgets (browser)

# Inherits from: apostrophe-context

apostrophe-widgets is a parent class for the browser-side managers of widget types. Each manager object is responsible for all widgets of that type.

Extends apostrophe-context in order to gain access to conveniences like the self.api and self.html methods. There is no self.$el, because this object manages many widgets.

The play method, if it exists, is invoked when appropriate with ($widget, data, options), and should enhance that specific widget. The play method should never use $(...) selectors, instead always using $widget.find(...) to scope them to that specific widget.

# Methods

# getData($widget)

Supply me in your subclass if your widget needs a player, such as a slideshow animation self.play = function($widget, data, options) { } Get the data associated with the widget. By default this is just the data attribute's JSON data, but some widgets, like apostrophe-rich-text, also store data as markup

# setData($widget, data)

# canEdit($widget)

Returns true if we are allowed to edit this widget. Independent of getData because that is sometimes overridden but this is always the right place to get the _edit flag from.

If editing would otherwise be permitted but is specifically disabled for this area for workflow reasons, false is returned.

# edit(data, options, save)

Opens the editor modal of a widget, unless the widget is contextualOnly, in which case we simply save the widget and call the save method Widget can opitonally be set to skipInitialModal which skips the first edit modal but binds future editing interactions

# isEmpty($widget)

Area editor calls this to determine whether to apply an empty state class for the widget

# getData($widget)

# startAutosavingAreaThen($widget, fn)

Start autosaving the area containing the given widget, then invoke the given function. On failure fn is not invoked. Invoked by widgets that are edited contextually on the page, like apostrophe-rich-text, as opposed to widgets edited via a modal.