PopupButton
A button class with a popup control
DEFINED IN: popup-button.js line number: 11
EXTENDS: clickable-component.js
Constructor
PopupButton( player,[options] )
Parameters
name | Type | Required | Description |
---|---|---|---|
player | Player|Object | ||
options | Object |
Methods
buildCSSClass()
Allow sub components to stack CSS class names
Defined in https://github.com/videojs/video.js/blob/master/src/js/popup/popup-button.js line number: 69
createEl()
Create the component's DOM element
Defined in https://github.com/videojs/video.js/blob/master/src/js/popup/popup-button.js line number: 57
createPopup()
Create popup - Override with specific functionality for component
Defined in https://github.com/videojs/video.js/blob/master/src/js/popup/popup-button.js line number: 49
update()
Update popup
Defined in https://github.com/videojs/video.js/blob/master/src/js/popup/popup-button.js line number: 27
addChild( child, [options] )
Adds a child component inside this clickable-component
Parameters
name | Type | Required | Description |
---|---|---|---|
child | String|Component | yes | The class name or instance of a child to add |
options | Object | no | Options, including options to be passed to children of the child. |
Defined in https://github.com/videojs/video.js/blob/master/src/js/clickable-component.js line number: 112
controlText( el )
create control text
Parameters
name | Type | Required | Description |
---|---|---|---|
el | Element | yes | Parent element for the control text |
Defined in https://github.com/videojs/video.js/blob/master/src/js/clickable-component.js line number: 65
handleBlur()
Handle Blur - Remove keyboard triggers
Defined in https://github.com/videojs/video.js/blob/master/src/js/clickable-component.js line number: 163
handleClick()
Handle Click - Override with specific functionality for component
Defined in https://github.com/videojs/video.js/blob/master/src/js/clickable-component.js line number: 132
handleFocus()
Handle Focus - Add keyboard functionality to element
Defined in https://github.com/videojs/video.js/blob/master/src/js/clickable-component.js line number: 139
handleKeyPress()
Handle KeyPress (document level) - Trigger click when Space or Enter key is pressed
Defined in https://github.com/videojs/video.js/blob/master/src/js/clickable-component.js line number: 148
$( selector, [context] )
Finds a single DOM element matching selector
within the component's
contentEl
or another custom context.
Parameters
name | Type | Required | Description |
---|---|---|---|
selector | String | yes | A valid CSS selector, which will be passed to querySelector . |
context | Element|String | no | A DOM element within which to query. Can also be a selector
string in which case the first matching element will be used
as context. If missing (or no element matches selector), falls
back to document . |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 841
$$( selector, [context] )
Finds a all DOM elements matching selector
within the component's
contentEl
or another custom context.
Parameters
name | Type | Required | Description |
---|---|---|---|
selector | String | yes | A valid CSS selector, which will be passed to querySelectorAll . |
context | Element|String | no | A DOM element within which to query. Can also be a selector
string in which case the first matching element will be used
as context. If missing (or no element matches selector), falls
back to document . |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 861
addClass( classToAdd )
Add a CSS class name to the component's element
Parameters
name | Type | Required | Description |
---|---|---|---|
classToAdd | String | yes | Classname to add |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 892
children()
Get an array of all child components
var kids = myComponent.children();
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 282
clearInterval( intervalId )
Clears an interval and removes the associated dispose listener
Parameters
name | Type | Required | Description |
---|---|---|---|
intervalId | Number | yes | The id of the interval to clear |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1295
clearTimeout( timeoutId )
Clears a timeout and removes the associated dispose listener
Parameters
name | Type | Required | Description |
---|---|---|---|
timeoutId | Number | yes | The id of the timeout to clear |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1252
contentEl()
Return the component's DOM element where children are inserted. Will either be the same as el() or a new element defined in createEl().
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 245
dimensions( width, height )
Set both width and height at the same time
Parameters
name | Type | Required | Description |
---|---|---|---|
width | Number|String | yes | Width of player |
height | Number|String | yes | Height of player |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1015
dispose()
Dispose of the component and all child components
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 101
el()
Get the component's DOM element
var domEl = myComponent.el();
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 195
enableTouchActivity()
Report user touch activity when touch events occur User activity is used to determine when controls should show/hide. It's relatively simple when it comes to mouse events, because any mouse event should show the controls. So we capture mouse events that bubble up to the player and report activity when that happens. With touch events it isn't as easy. We can't rely on touch events at the player level, because a tap (touchstart + touchend) on the video itself on mobile devices is meant to turn controls off (and on). User activity is checked asynchronously, so what could happen is a tap event on the video turns the controls off, then the touchend event bubbles up to the player, which if it reported user activity, would turn the controls right back on. (We also don't want to completely block touch events from bubbling up) Also a touchmove, touch+hold, and anything other than a tap is not supposed to turn the controls back on on a mobile device. Here we're setting the default component behavior to report user activity whenever touch events happen, and this can be turned off by components that want touch events to act differently.
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1174
static extend( props ) (deprecated)
Sets up the constructor using the supplied init method or uses the init of the parent object
Parameters
name | Type | Required | Description |
---|---|---|---|
props | Object | yes | An object of properties |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1350
getChild()
Returns a child component with the provided name
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 305
getChildById()
Returns a child component with the provided ID
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 295
static getComponent( name )
Gets a component by name
Parameters
name | Type | Required | Description |
---|---|---|---|
name | String | yes | Name of the component to get |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1331
hasClass( classToCheck )
Check if a component's element has a CSS class name
Parameters
name | Type | Required | Description |
---|---|---|---|
classToCheck | String | yes | Classname to check |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 881
height( num, [skipListeners] )
Get or set the height of the component (CSS values) Setting the video tag dimension values only works with values in pixels. Percent values will not work. Some percents can be used, but width()/height() will return the number + %, not the actual computed width/height.
Parameters
name | Type | Required | Description |
---|---|---|---|
num | Number|String | yes | New component height |
skipListeners | Boolean | no | Skip the resize event trigger |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 998
hide()
Hide the component element if currently showing
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 944
id()
Get the component's ID
var id = myComponent.id();
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 256
initChildren()
Add and initialize default child components from options
// when an instance of MyComponent is created, all children in options
// will be added to the instance by their name strings and options
MyComponent.prototype.options_ = {
children: [
'myChildComponent'
],
myChildComponent: {
myChildOption: true
}
};
// Or when creating the component
var myComp = new MyComponent(player, {
children: [
'myChildComponent'
],
myChildComponent: {
myChildOption: true
}
});
The children option can also be an array of child options objects (that also include a 'name' key). This can be used if you have two child components of the same type that need different options.
var myComp = new MyComponent(player, {
children: [
'button',
{
name: 'button',
someOtherOption: true
},
{
name: 'button',
someOtherOption: false
}
]
});
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 455
name()
Get the component's name. The name is often used to reference the component.
var name = myComponent.name();
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 269
off( first, second, [third] )
Remove an event listener from this component's element
myComponent.off('eventType', myFunc);
If myFunc is excluded, ALL listeners for the event type will be removed.
If eventType is excluded, ALL listeners will be removed from the component.
Alternatively you can use off
to remove listeners that were added to other
elements or components using myComponent.on(otherComponent...
.
In this case both the event type and listener function are REQUIRED.
myComponent.off(otherElement, 'eventType', myFunc);
myComponent.off(otherComponent, 'eventType', myFunc);
Parameters
name | Type | Required | Description |
---|---|---|---|
first | String|Component | yes | The event type or other component |
second | function|String | yes | The listener function or event type |
third | function | no | The listener for other component |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 680
on( first, second, third )
Add an event listener to this component's element
var myFunc = function(){
var myComponent = this;
// Do something when the event is fired
};
myComponent.on('eventType', myFunc);
The context of myFunc will be myComponent unless previously bound. Alternatively, you can add a listener to another element or component.
myComponent.on(otherElement, 'eventName', myFunc);
myComponent.on(otherComponent, 'eventName', myFunc);
The benefit of using this over VjsEvents.on(otherElement, 'eventName', myFunc)
and otherComponent.on('eventName', myFunc)
is that this way the listeners
will be automatically cleaned up when either component is disposed.
It will also bind myComponent as the context of myFunc.
NOTE: When using this on elements in the page other than window
and document (both permanent), if you remove the element from the DOM
you need to call myComponent.trigger(el, 'dispose')
on it to clean up
references to it and allow the browser to garbage collect it.
Parameters
name | Type | Required | Description |
---|---|---|---|
first | String|Component | yes | The event type or other component |
second | function|String | yes | The event handler or event type |
third | function | yes | The event handler |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 605
one( first, second, [third] )
Add an event listener to be triggered only once and then removed
myComponent.one('eventName', myFunc);
Alternatively you can add a listener to another element or component that will be triggered only once.
myComponent.one(otherElement, 'eventName', myFunc);
myComponent.one(otherComponent, 'eventName', myFunc);
Parameters
name | Type | Required | Description |
---|---|---|---|
first | String|Component | yes | The event type or other component |
second | function|String | yes | The listener function or event type |
third | function | no | The listener function for other component |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 728
options( obj )
Deep merge of options objects Whenever a property is an object on both options objects the two properties will be merged using mergeOptions.
Parent.prototype.options_ = {
optionSet: {
'childOne': { 'foo': 'bar', 'asdf': 'fdsa' },
'childTwo': {},
'childThree': {}
}
}
newOptions = {
optionSet: {
'childOne': { 'foo': 'baz', 'abc': '123' }
'childTwo': null,
'childFour': {}
}
}
this.options(newOptions);
RESULT
{
optionSet: {
'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' },
'childTwo': null, // Disabled. Won't be initialized.
'childThree': {},
'childFour': {}
}
}
Parameters
name | Type | Required | Description |
---|---|---|---|
obj | Object | yes | Object of new option values |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 145
player()
Return the component's player
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 135
ready( fn, sync )
Bind a listener to the component's ready state. Different from event listeners in that if the ready event has already happened it will trigger the function immediately.
Parameters
name | Type | Required | Description |
---|---|---|---|
fn | function | yes | Ready listener |
sync | Boolean | yes | Exec the listener synchronously if component is ready |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 787
static registerComponent( name, comp )
Registers a component
Parameters
name | Type | Required | Description |
---|---|---|---|
name | String | yes | Name of the component to register |
comp | Object | yes | The component to register |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1314
removeChild( component )
Remove a child component from this component's list of children, and the child component's element from this component's element
Parameters
name | Type | Required | Description |
---|---|---|---|
component | Component | yes | Component to remove |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 415
removeClass( classToRemove )
Remove a CSS class name from the component's element
Parameters
name | Type | Required | Description |
---|---|---|---|
classToRemove | String | yes | Classname to remove |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 904
setInterval( fn, interval )
Creates an interval and sets up disposal automatically.
Parameters
name | Type | Required | Description |
---|---|---|---|
fn | function | yes | The function to run every N seconds. |
interval | Number | yes | Number of ms to delay before executing specified function. |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1271
setTimeout( fn, timeout )
Creates timeout and sets up disposal automatically.
Parameters
name | Type | Required | Description |
---|---|---|---|
fn | function | yes | The function to run after the timeout. |
timeout | Number | yes | Number of ms to delay before executing specified function. |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1227
show()
Show the component element if hidden
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 933
toggleClass( classToToggle, [predicate] )
Add or remove a CSS class name from the component's element
Parameters
name | Type | Required | Description |
---|---|---|---|
classToToggle | String | ||
predicate | Boolean|function | no | Can be a function that returns a Boolean. If true , the class
will be added; if false , the class will be removed. If not
given, the class will be added if not present and vice versa. |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 916
trigger( event, [hash] )
Trigger an event on an element
myComponent.trigger('eventName');
myComponent.trigger({'type':'eventName'});
myComponent.trigger('eventName', {data: 'some data'});
myComponent.trigger({'type':'eventName'}, {data: 'some data'});
Parameters
name | Type | Required | Description |
---|---|---|---|
event | Event|Object|String | yes | A string (the type) or an event object with a type attribute |
hash | Object | no | data hash to pass along with the event |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 768
triggerReady()
Trigger the ready listeners
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 814
width( num, skipListeners )
Set or get the width of the component (CSS values) Setting the video tag dimension values only works with values in pixels. Percent values will not work. Some percents can be used, but width()/height() will return the number + %, not the actual computed width/height.
Parameters
name | Type | Required | Description |
---|---|---|---|
num | Number|String | yes | Optional width number |
skipListeners | Boolean | yes | Skip the 'resize' event trigger |
Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 981