semantic-ui-riot
Version:
Semantic UI for Riot
223 lines (184 loc) • 7.45 kB
JavaScript
// ===================================================================================
// Lifecycle
// =========
function onMounted(props) {
const isRight = (props.position || '').indexOf('right') >= 0;
const direction = isRight ? 'left' : 'right';
this.position = isRight ? 'right' : 'left';
this.transition = `transition animating in fade ${direction}`;
this.icon = props.icon;
this.progress = props.progress;
this.className = props.className;
this.title = props.title;
this.messages = props.messages;
this.update();
setTimeout(() => {
this.transition = '';
this.update();
}, 300);
setTimeout(() => {
this.transition = `transition animating out fade ${direction}`;
this.update();
}, 3000);
setTimeout(() => {
this.transition = 'transition hidden';
this.hide = true;
this.update();
}, 3500);
}
// ===================================================================================
// Events
// ======
function onClose() {
this.hide = true;
this.update();
}
var suToastItem = {
'css': `su-toast-item .ui.message,[is="su-toast-item"] .ui.message{ margin: 0 } @-webkit-keyframes progress-active { 0% { -webkit-transform: scale(0, 1); transform: scale(0, 1); } 100% { -webkit-transform: scale(1); transform: scale(1); } } progress-active { 0% { -webkit-transform: scale(0, 1); transform: scale(0, 1); } 100% { -webkit-transform: scale(1); transform: scale(1); } } su-toast-item .attached.progress,[is="su-toast-item"] .attached.progress{ z-index: 1; } su-toast-item .attached.progress .bar,[is="su-toast-item"] .attached.progress .bar{ min-width: 0%; width: 100%; } su-toast-item .active.progress .bar:after,[is="su-toast-item"] .active.progress .bar:after,su-toast-item .ui.progress.success .bar:after,[is="su-toast-item"] .ui.progress.success .bar:after,su-toast-item .ui.progress.warning .bar:after,[is="su-toast-item"] .ui.progress.warning .bar:after,su-toast-item .ui.progress.error .bar:after,[is="su-toast-item"] .ui.progress.error .bar:after{ animation: progress-active 3.5s infinite !important; -webkit-transform-origin: left; transform-origin: left; opacity: 0.3 !important; } su-toast-item .bottom.attached.progress,[is="su-toast-item"] .bottom.attached.progress{ margin: -3px 0 6px; } su-toast-item .top.attached.progress,[is="su-toast-item"] .top.attached.progress{ margin: 6px 0 -3px; }`,
'exports': {
onMounted,
onClose
},
'template': function(template, expressionTypes, bindingTypes, getComponent) {
return template('<div expr113="expr113"></div>', [{
'expressions': [{
'type': expressionTypes.ATTRIBUTE,
'name': 'class',
'evaluate': function(scope) {
return ['item ', scope.transition].join('');
}
}]
}, {
'type': bindingTypes.IF,
'evaluate': function(scope) {
return !scope.hide;
},
'redundantAttribute': 'expr113',
'selector': '[expr113]',
'template': template(
'<div expr114="expr114"></div><div expr115="expr115"><i expr116="expr116" class="close icon"></i><i expr117="expr117"></i><div class="content"><div expr118="expr118" class="header"></div><p expr119="expr119"></p></div></div><div expr120="expr120"></div>',
[{
'expressions': [{
'type': expressionTypes.ATTRIBUTE,
'name': 'class',
'evaluate': function(scope) {
return [' ', scope.position, ' floated'].join('');
}
}]
}, {
'type': bindingTypes.IF,
'evaluate': function(scope) {
return scope.progress == 'top';
},
'redundantAttribute': 'expr114',
'selector': '[expr114]',
'template': template('<div class="bar"></div>', [{
'expressions': [{
'type': expressionTypes.ATTRIBUTE,
'name': 'class',
'evaluate': function(scope) {
return ['ui attached active progress ', scope.className, ' top'].join('');
}
}]
}])
}, {
'redundantAttribute': 'expr115',
'selector': '[expr115]',
'expressions': [{
'type': expressionTypes.ATTRIBUTE,
'name': 'class',
'evaluate': function(scope) {
return [
'ui ',
scope.icon ? 'icon' : '',
' ',
scope.className,
' floating compact message'
].join('');
}
}]
}, {
'redundantAttribute': 'expr116',
'selector': '[expr116]',
'expressions': [{
'type': expressionTypes.EVENT,
'name': 'onclick',
'evaluate': function(scope) {
return scope.onClose;
}
}]
}, {
'type': bindingTypes.IF,
'evaluate': function(scope) {
return scope.icon;
},
'redundantAttribute': 'expr117',
'selector': '[expr117]',
'template': template(null, [{
'expressions': [{
'type': expressionTypes.ATTRIBUTE,
'name': 'class',
'evaluate': function(scope) {
return [scope.icon, ' icon'].join('');
}
}]
}])
}, {
'type': bindingTypes.IF,
'evaluate': function(scope) {
return scope.title;
},
'redundantAttribute': 'expr118',
'selector': '[expr118]',
'template': template(' ', [{
'expressions': [{
'type': expressionTypes.TEXT,
'childNodeIndex': 0,
'evaluate': function(scope) {
return [scope.title].join('');
}
}]
}])
}, {
'type': bindingTypes.EACH,
'getKey': null,
'condition': null,
'template': template(' ', [{
'expressions': [{
'type': expressionTypes.TEXT,
'childNodeIndex': 0,
'evaluate': function(scope) {
return scope.message;
}
}]
}]),
'redundantAttribute': 'expr119',
'selector': '[expr119]',
'itemName': 'message',
'indexName': null,
'evaluate': function(scope) {
return scope.messages;
}
}, {
'type': bindingTypes.IF,
'evaluate': function(scope) {
return scope.progress == 'bottom';
},
'redundantAttribute': 'expr120',
'selector': '[expr120]',
'template': template('<div class="bar"></div>', [{
'expressions': [{
'type': expressionTypes.ATTRIBUTE,
'name': 'class',
'evaluate': function(scope) {
return ['ui attached active progress ', scope.className, ' bottom'].join('');
}
}]
}])
}]
)
}]);
},
'name': 'su-toast-item'
};
export default suToastItem;