I am very new to Angular and I would like to get some help, I have a pure JavaScript code for an accordion that I want to convert into an Angular Directive, I read the Angular Documentation and everything but I don't know where to start.
this is the simple HTML that I have so far:
<div id="divMiAccordion2" class="panel-group">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Sección 1</h3>
</div>
<div class="panel-body">
<p>
Texto sección 1
</p>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Sección 2</h3>
</div>
<div class="panel-body">
<p>
Texto sección 2
</p>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Sección 3</h3>
</div>
<div class="panel-body">
<p>
Texto sección 3
</p>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Sección 4</h3>
</div>
<div class="panel-body">
<p>
Texto sección 4
</p>
</div>
</div>
</div>
and this is my JavaScript:
function Accordion(opciones){
var opts = {
divId:'divMiAccordion',
displayMode: 'single',
titleEvent: 'mouseover',
headerClassName: 'custColor',
contentClassName: 'custContent',
centerTitle: false,
centerContent: false
};
var acc1 = new Accordion(opts);
var acc2 = new Accordion({
divId:'divMiAccordion2',
displayMode: 'multiple',
titleEvent: 'click'
});
var self = this;
this.init = function(){
this.container = document.getElementById(opciones.divId);
this.contenedores = this.container.querySelectorAll('div.panel-body');
this.titulos = this.container.querySelectorAll('h3');
this.options = opciones;
for(var i=0; i<this.contenedores.length; i++){
this.contenedores[i].classList.add('hidden');
}
for (var i = 0; i < this.titulos.length; i++) {
if(this.options.titleEvent === 'click'){
this.titulos[i].onclick = tituloEvent;
}
else{
this.titulos[i].onmouseover = tituloEvent;
}
};
} //fin init
this.getId = function(){
return self.container.id;
}
function tituloEvent(){
var tempNode = null;
if(self.options.displayMode === 'single'){
for (var i = 0; i < self.titulos.length; i++) {
tempNode = self.titulos[i].parentNode.nextElementSibling;
tempNode.classList.add('hidden');
};
}
tempNode = this.parentNode.nextElementSibling;
if(tempNode.classList.contains('shown')){
tempNode.classList.add('hidden');
tempNode.classList.remove('shown');
}
else{
tempNode.classList.add('shown');
tempNode.classList.remove('hidden');
}
}
function headerClass () {
var header = document.getElementsByClassName('header').onclick = headerClass();
clas = document.getElementsByClassName('class').onclick = classClass(),
panel = document.getElementsByClassName('panel-title');
if (header.clicked) {
panel.className = 'color: blue';
};
}
function classClass () {
}
this.init();
} //fin accordion
ui.bootstrap.accordion.