13 KiB
vjs.Component
EXTENDS: vjs.CoreObject
DEFINED IN: src/js/component.js#L35
Base UI Component class
Components are embeddable UI objects that are represented by both a javascript object and an element in the DOM. They can be children of other components, and can have many children themselves.
// adding a button to the player
var button = player.addChild('button');
button.el(); // -> button element
<div class="video-js">
<div class="vjs-button">Button</div>
</div>
Components are also event emitters.
button.on('click', function(){
console.log('Button Clicked!');
});
button.trigger('customevent');
INDEX
METHODS
addChild( child, [options] )
Adds a child component inside this component
myComponent.el(); // -> <div class='my-component'></div> myComonent.children(); // [empty array] var myButton = myComponent.addChild('MyButton'); // -> <div class='my-component'><div class="my-button">myButton<div></div> // -> myButton === myComonent.children()[0];
Pass in options for child constructors and options for children of the child
var myButton = myComponent.addChild('MyButton', { text: 'Press Me', children: { buttonChildExample: { buttonChildOption: true } } });
PARAMETERS:
- child
String|vjs.Component
The class name or instance of a child to add - options
Object
(OPTIONAL) Options, including options to be passed to children of the child.
RETURNS:
vjs.Component
The child component (created by this process if a string was used)
defined in: src/js/component.js#L343
addClass( classToAdd )
Add a CSS class name to the component's element
PARAMETERS:
- classToAdd
String
Classname to add
RETURNS:
vjs.Component
defined in: src/js/component.js#L628
buildCSSClass()
Allows sub components to stack CSS class names
RETURNS:
String
The constructed class name
defined in: src/js/component.js#L471
children()
Get an array of all child components
var kids = myComponent.children();
RETURNS:
Array
The children
defined in: src/js/component.js#L277
contentEl()
Return the component's DOM element for embedding content. Will either be el_ or a new element defined in createEl.
RETURNS:
Element
defined in: src/js/component.js#L220
createEl( [tagName], [attributes] )
Create the component's DOM element
PARAMETERS:
- tagName
String
(OPTIONAL) Element's node type. e.g. 'div' - attributes
Object
(OPTIONAL) An object of element attributes that should be set on the element
RETURNS:
Element
defined in: src/js/component.js#L190
dimensions( width, height )
Set both width and height at the same time
PARAMETERS:
- width
Number|String
- height
Number|String
RETURNS:
vjs.Component
The component
defined in: src/js/component.js#L730
disable()
Disable component by making it unshowable
defined in: src/js/component.js#L691
dispose()
Dispose of the component and all child components
defined in: src/js/component.js#L74
el()
Get the component's DOM element
var domEl = myComponent.el();
RETURNS:
Element
defined in: src/js/component.js#L201
getChild( name )
Returns a child component with the provided ID
PARAMETERS:
- name
RETURNS:
vjs.Component
defined in: src/js/component.js#L311
getChildById( id )
Returns a child component with the provided ID
PARAMETERS:
- id
RETURNS:
vjs.Component
defined in: src/js/component.js#L294
height( [num], [skipListeners] )
Get or set the height of the component (CSS values)
PARAMETERS:
- num
Number|String
(OPTIONAL) New component height - skipListeners
Boolean
(OPTIONAL) Skip the resize event trigger
RETURNS:
vjs.Component
The component if the height was setNumber|String
The height if it wasn't set
defined in: src/js/component.js#L719
hide()
Hide the component element if hidden
RETURNS:
vjs.Component
defined in: src/js/component.js#L659
id()
Get the component's ID
var id = myComponent.id();
RETURNS:
String
defined in: src/js/component.js#L239
init( player, options, ready )
the constructor funciton for the class
PARAMETERS:
- player
- options
- ready
defined in: src/js/component.js#L41
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: { myChildOption: true } }
defined in: src/js/component.js#L439
name()
Get the component's name. The name is often used to reference the component.
var name = myComponent.name();
RETURNS:
String
defined in: src/js/component.js#L258
off( [type], [fn] )
Remove an event listener from the component's element
myComponent.off("eventName", myFunc);
PARAMETERS:
- type
String
(OPTIONAL) Event type. Without type it will remove all listeners. - fn
Function
(OPTIONAL) Event listener. Without fn it will remove all listeners for a type.
RETURNS:
vjs.Component
defined in: src/js/component.js#L510
on( type, fn )
Add an event listener to this component's element
var myFunc = function(){ var myPlayer = this; // Do something when the event is fired }; myPlayer.on("eventName", myFunc);
The context will be the component.
PARAMETERS:
- type
String
The event type e.g. 'click' - fn
Function
The event listener
RETURNS:
vjs.Component
self
defined in: src/js/component.js#L496
one( type, fn )
Add an event listener to be triggered only once and then removed
PARAMETERS:
- type
String
Event type - fn
Function
Event listener
RETURNS:
vjs.Component
defined in: src/js/component.js#L522
options( obj )
Deep merge of options objects
Whenever a property is an object on both options objects the two properties will be merged using vjs.obj.deepMerge.
This is used for merging options for child components. We want it to be easy to override individual options on a child component without having to rewrite all the other default options.
Parent.prototype.options_ = { children: { 'childOne': { 'foo': 'bar', 'asdf': 'fdsa' }, 'childTwo': {}, 'childThree': {} } } newOptions = { children: { 'childOne': { 'foo': 'baz', 'abc': '123' } 'childTwo': null, 'childFour': {} } } this.options(newOptions);
RESULT
{ children: { 'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' }, 'childTwo': null, // Disabled. Won't be initialized. 'childThree': {}, 'childFour': {} } }
PARAMETERS:
- obj
Object
Object whose values will be overwritten
RETURNS:
Object
NEW merged object. Does not return obj1.
defined in: src/js/component.js#L169
player()
Return the component's player
RETURNS:
vjs.Player
defined in: src/js/component.js#L116
ready( fn )
Bind a listener to the component's ready state
Different from event listeners in that if the ready event has already happend it will trigger the function immediately.
PARAMETERS:
- fn
Function
Ready listener
RETURNS:
vjs.Component
defined in: src/js/component.js#L581
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:
- component
vjs.Component
Component to remove
defined in: src/js/component.js#L401
removeClass( classToRemove )
Remove a CSS class name from the component's element
PARAMETERS:
- classToRemove
String
Classname to remove
RETURNS:
vjs.Component
defined in: src/js/component.js#L639
show()
Show the component element if hidden
RETURNS:
vjs.Component
defined in: src/js/component.js#L649
trigger( type, event )
Trigger an event on an element
myComponent.trigger('eventName');
PARAMETERS:
- type
String
The event type to trigger, e.g. 'click' - event
Event|Object
The event object to be passed to the listener
RETURNS:
vjs.Component
self
defined in: src/js/component.js#L536
triggerReady()
Trigger the ready listeners
RETURNS:
vjs.Component
defined in: src/js/component.js#L600
width( [num], skipListeners )
Set or get the width of the component (CSS values)
Video tag width/height only work in pixels. No percents. But allowing limited percents use. e.g. width() will return number+%, not computed width
PARAMETERS:
- num
Number|String
(OPTIONAL) Optional width number - skipListeners
Boolean
Skip the 'resize' event trigger
RETURNS:
vjs.Component
Returns 'this' if width was setNumber|String
Returns the width if nothing was set
defined in: src/js/component.js#L707
EVENTS
resize EVENT
Fired when the width and/or height of the component changes
defined in: src/js/component.js#L809