semantic-ui-riot
Version:
Semantic UI for Riot
82 lines (68 loc) • 2.17 kB
JavaScript
let index = 0;
// ===================================================================================
// Lifecycle
// =========
// eslint-disable-next-line no-unused-vars
function onMounted(props, state) {
this.su_id = `su-tab-title-${index++}`;
this.update();
this.obs.on(`${this.su_id}-toggle-active`, active => {
this.update({
active
});
});
this.obs.on(`${this.su_id}-add-tabset-id`, suTabsetId => {
this.suTabsetId = suTabsetId;
});
}
// ===================================================================================
// Events
// ======
function onClick() {
this.obs.trigger(`${this.suTabsetId}-title-clicked`, this.$('a.item').innerText.trim());
}
var suTabTitle = {
'css': null,
'exports': {
state: {
active: false,
},
onMounted,
onClick
},
'template': function(template, expressionTypes, bindingTypes, getComponent) {
return template('<a expr102="expr102"><slot expr103="expr103"></slot></a>', [{
'expressions': [{
'type': expressionTypes.ATTRIBUTE,
'name': 'id',
'evaluate': function(scope) {
return scope.su_id;
}
}]
}, {
'redundantAttribute': 'expr102',
'selector': '[expr102]',
'expressions': [{
'type': expressionTypes.ATTRIBUTE,
'name': 'class',
'evaluate': function(scope) {
return [scope.props.class, ' ', scope.state.active && 'active', ' item'].join('');
}
}, {
'type': expressionTypes.EVENT,
'name': 'onclick',
'evaluate': function(scope) {
return scope.onClick;
}
}]
}, {
'type': bindingTypes.SLOT,
'attributes': [],
'name': 'default',
'redundantAttribute': 'expr103',
'selector': '[expr103]'
}]);
},
'name': 'su-tab-title'
};
export default suTabTitle;