1
0
Fork 0
mirror of https://github.com/koalyptus/TableFilter.git synced 2024-06-03 14:32:21 +02:00
TableFilter/src/modules/clearButton.js

95 lines
2.6 KiB
JavaScript
Raw Normal View History

import {Feature} from './feature';
2015-05-30 14:23:33 +02:00
import Dom from '../dom';
import Event from '../event';
2015-02-19 06:28:50 +01:00
export class ClearButton extends Feature{
2015-02-19 06:28:50 +01:00
/**
* Clear button component
* @param {Object} tf TableFilter instance
*/
constructor(tf){
super(tf, 'btnReset');
2015-02-19 06:28:50 +01:00
// Configuration object
var f = this.config;
2015-02-19 06:28:50 +01:00
//id of container element
this.btnResetTgtId = f.btn_reset_target_id || null;
//reset button element
this.btnResetEl = null;
//defines reset text
this.btnResetText = f.btn_reset_text || 'Reset';
//defines reset button tooltip
this.btnResetTooltip = f.btn_reset_tooltip || 'Clear filters';
//defines reset button innerHtml
this.btnResetHtml = f.btn_reset_html ||
(!tf.enableIcons ? null :
'<input type="button" value="" class="'+tf.btnResetCssClass+'" ' +
'title="'+this.btnResetTooltip+'" />');
//span containing reset button
this.prfxResetSpan = 'resetspan_';
2015-02-19 06:28:50 +01:00
}
onClick(){
if(!this.isEnabled()){
return;
}
this.tf.clearFilters();
2015-02-19 06:28:50 +01:00
}
/**
* Build DOM elements
*/
init(){
var tf = this.tf;
if(this.initialized){
2015-02-19 06:28:50 +01:00
return;
}
var resetspan = Dom.create('span', ['id', this.prfxResetSpan+tf.id]);
2015-02-19 06:28:50 +01:00
// reset button is added to defined element
if(!this.btnResetTgtId){
tf.setToolbar();
2015-02-19 06:28:50 +01:00
}
var targetEl = !this.btnResetTgtId ?
tf.rDiv : Dom.id(this.btnResetTgtId);
targetEl.appendChild(resetspan);
if(!this.btnResetHtml){
var fltreset = Dom.create('a', ['href', 'javascript:void(0);']);
fltreset.className = tf.btnResetCssClass;
fltreset.appendChild(Dom.text(this.btnResetText));
resetspan.appendChild(fltreset);
Event.add(fltreset, 'click', ()=> { this.onClick(); });
2015-02-19 06:28:50 +01:00
} else {
resetspan.innerHTML = this.btnResetHtml;
var resetEl = resetspan.firstChild;
Event.add(resetEl, 'click', ()=> { this.onClick(); });
2015-02-19 06:28:50 +01:00
}
this.btnResetEl = resetspan.firstChild;
this.initialized = true;
2015-02-19 06:28:50 +01:00
}
/**
* Remove clear button UI
*/
destroy(){
var tf = this.tf;
if(!this.initialized){
2015-02-19 06:28:50 +01:00
return;
}
var resetspan = Dom.id(this.prfxResetSpan+tf.id);
2015-02-19 06:28:50 +01:00
if(resetspan){
2015-12-05 14:37:59 +01:00
Dom.remove(resetspan);
2015-02-19 06:28:50 +01:00
}
this.btnResetEl = null;
this.initialized = false;
2015-02-19 06:28:50 +01:00
}
}