' +
'
' +
'
' +
'' +
'
' +
'' +
'
' +
'' +
'
' +
'
',
'rg-modal .o-modal--ghost .o-modal__footer .c-button,[riot-tag="rg-modal"] .o-modal--ghost .c-card__footer' +
' .c-button,[data-is="rg-modal"] .o-modal--ghost .c-card__footer .c-button{ margin: 0 .5em 0 0; }', "",
function(opts) {
var _this = this;
this.on("before-mount", function() {
if (!opts.modal)
opts.modal = {
/*
isvisible: ((typeof opts.visible == "undefined") ? Boolean(opts.visible) : true),
dismissable: ((typeof opts.dismissable == "undefined") ? Boolean(opts.dismissable) : true),
full: ((typeof opts.fullscreen == "undefined") ? Boolean(opts.fullscreen) : false),
ghost: ((typeof opts.ghost == "undefined") ? Boolean(opts.ghost) : false),
*/
isvisible: true,
dismissable: true,
full: false,
ghost: false,
heading: (opts.heading ? opts.heading : 'Note'),
buttons: [{
text: 'Close',
style: 'brand',
action: function() {
this.close()
}
}],
blockbuttons: true
}
});
this.close = function() {
if (opts.modal.dismissable) {
opts.modal.isvisible = false;
_this.trigger("close");
}
}
});
riot.tag("rg-pagination",
'', "", "",
function(opts) {
var _this = this;
this.on("before-mount", function() {
if (!opts.pagination) {
pagination = {
pages: 10,
page: 1
}
}
if (opts.page && opts.pages) {
opts.page = Number(opts.page);
opts.pages = Number(opts.pages);
if (opts.page > opts.pages)
opts.page = opts.pages;
}
if (opts.page)
opts.pagination.page = Number(opts.page);
if (opts.pages)
opts.pagination.pages = Number(opts.pages);
});
this.on("page", function() {
var btns = _this.root.querySelectorAll("button");
for (var i = 0; i < btns.length; i++) {
btns[i].blur()
}
});
this.forward = function() {
opts.pagination.page++;
_this.trigger("page", opts.pagination.page)
};
this.back = function() {
opts.pagination.page--;
_this.trigger("page", opts.pagination.page)
};
this.first = function() {
opts.pagination.page = 1;
_this.trigger("page", opts.pagination.page)
};
this.last = function() {
opts.pagination.page = opts.pagination.pages;
_this.trigger("page", opts.pagination.page)
}
});
riot.tag("rg-phone-sim", '
',
'rg-phone-sim .emulator,[riot-tag="rg-phone-sim"] .emulator,[data-is="rg-phone-sim"] .emulator{ position: relative; width: 365px; height: 792px; background-image:' +
'url(\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW0AAAMYCAMAAAA3r0ZLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwBQTFRFMDk6+vr6KTM0lJucMz4/PklKJS8wLTg5Qk1O' +
'xsjILzo7gomJ2NvbdH5/ho2O9fb2KzY3ztHRPEdIOkVGZWxtjJSVOEJDkpeYWGRluL2+KTQ1vcHBoaWlPUZHcnp6nKKjOkRF1NfXqa2tp62tZnBxanV2VmFiZ29wVl1eaXJzbXR04uTktbq7QElK1tnZipKTi5CRTlZXpKioo' +
'6mqXmlqUVlaOEFCSVFSUFxdISssT1tcTlpbJC4vIiwtTVlaJjAxIy0uTFhZS1dYJzEyKDIzSlZXPUhJOURFO0ZHSVVWKzU2P0pLKjQ1OENEND0+QEtMLDY3SFRVN0JDQ05PLTc4ND9ANUBBQUxNNkFCR1NUMTo7RE9QLjg5' +
'N0BBR1JTRlJTLzk6RVFSMjs8RVBRRlFSNj9AMzw9SFNUMj0+IissMTs8MDo7SVRVRFBRMDs8MTw9IiwsMz0+Mjw9SlVWQ09QLjk6NT4/S1ZXND4/JC4uQU1OIy0tQk5PTFdYTVhZQExNTllaJS8vJzIyP0tMLzg5LDc4KDMzNT' +
'9AKjU1N0FCNkBBJjAwIywtMDs7Mj09NkFBJjExLjk5LDc3N0JCNUBAKjU2MTw8LDU2Ljc4OUNEKDEyQU1NPEhIPEhJO0dHOkZGND8/Qk5ORFBQQ09PLTY3OUREPkpKPkpLPUlJT1pbP0tLJTAwPUlKJzAxKjM07u/vKTIzsbW2YGprtLm' +
'50tXWPkhJo6endn+A3d/f6uvreoOEg4yN2tvc/Pz8n6am8/T0VFtcm6CgJS4v4OLi5ufnYGdncnt8dHp7gYaHJC0uu8DAjJGRQkxNxMfHKzQ1YGtsS1NUaXN0bnh5yMzMyszMy83Oy8/PdoCAKDIy7O3tT1dYuLu70NTUbXd46Onq6erreoC' +
'A2dzc8PHx8vPz5OXlnaSkn6Wmqq6ucHZ2t7y8o6eoeoSEkJaWm5+gW2ZnZG5vqa+wOEFB09bWtru7qrCwcXd4t7u83eDgzM7O7/DwNT4+7e7uwMPDwcPEeH5/////70wnUQAAAQB0Uk5T' +
'//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////' +
'//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////' +
'AFP3ByUAAA+NSURBVHja7N13nBTlGcDxEQI5AmJQBAkcnqhEDIhoWMt5iogmQbOaYNrqYrJh16gplmTVkILJpYCmF+DSE1JIcjRR7L333ntPYjQxvTl55tnr7N7t7uw+vDP3+/0x3G3hs5+vr++8M7s7eH75Xb5x+rOjN017aeq+tO++U' +
'1+atmn0s9M3Xl6BoFfm466ZOPROhIt259CJ19RS++7LdgW133a97O7aaI/a+VE0y+jRnUeF1p6wqfvvaz6+YVjT0jMyJ3rkeSdmzljaNKzh+OZuoE0TQmmvv67zLzrwmMY8wkXLNx5zYCfTdeur1p6wdeegblgKar8tbegc4lv/rirtjTMLT99' +
'/UVMKzgFLNS3avwA2c2Pl2n8tPHV1QxLJMks2rC6g/alC7ScvKozrhhyIFZRrKIzvi56sRHt94b/RIsZ1xeN7UYFuffna4/UJB68Er4rGHax648vUfmqkPnxBBrmqyixQv5FPlaP9Dz2eWdIEW9U1LdFjnQsG1n5ETz4dyowdavY+VE9XPTKQ9phddP' +
'fICjvk6lt3lruM6V97j132l26BK3S3BJAv79Gf9jN3BY85HKsadHhAedebSmtf+ofgEcOQqknDAsyLLi2pPTq4/0icatSRAefoUto7Bvc2oFSzGgLQHYtr3xTct5DVSA1XJgsD0puKaa99s9wzlwPImh5WzhXTl/5TRHt7uaN5GUI1bVmzqL64ufZfgkF/GD' +
'417rCA9e99tf8VzCPHoVPzjhPXaVv10d5bblzCyZE6nDIJ5pKde2u/Egz487Cp1zHlHr20h8otp50ETT2WgaeL7dCe2vcF/uOQqUsrA9z7emgHQ3thdEZLLpeL0kHYwq7BrdqjAv2ofEAnlU0EZaPjvTTgHdWlvXeEhnYu0VkuUoN7707tbW6X35oiciyc6C4y' +
'ZxmaxPf2bTq0z5VfTo/IC8/20M5GZnAHy5JzO7Tvj85bCKlEzyIzdQdvLNxf0L4wmMQjMgnmemlHZubOBcQXqvb0CO0jk720o3OmIdhPTlft4FTrth5ju55tK8bbq/YG+emUiLzqTC/t6Lz1cYoYbwi0r47QisTz0j2w0xE6ngxWJVeLdrD+WxCZVx3J9ba0QNeAnj' +
'9T/twuOi87GcF9pLSdKM8U7Q2rV6+O0jcQMoXJJB2t96tzorzB99Y2NzfPjdQL9zLJZDJynw2YK85rvZ1ku9Cjuq+4xXknb4Js+XxU/WsQ5wnec7LlDcn6d544P+ddLFu+zlT/Vorzxd5k2fIJqfq3TJwney/Lls+RGBwniPPL3g6y5aOWBstWcd7BmypbLjhS/1Li' +
'PNWTTTMWBik02mijTWijTWijjTbFVTuZTqSTRW8OUzqJdpGyxT89mU2ELYv25kO4+LvnyUT4kmj3LV38YzjpGmin3dReIm2pF9BlU+LmMDmnrdBbUntQje0trj2o5m2FPlBiTWKQQm9R7cG03nZAexCFNtpoE9poE9poo01oo01oo01oo4021VT7MxIUBik02mijTeG1D' +
'5agMEih0UYbbUIbbUIbbbQJbbQJbbQJbbTRplppf1qCwiCFRhtttCm89lwJCoMUGm200Sa00Sa00Uab0Eab0Eab0EY73tqnS1AYpNBoo402hdc+VILCIIVGG220CW20CW200Sa00Sa00aYC9GkSFAYpNNpoo01oR0v7bRIUBik02mijTWijTWijjTahjTah7bL2hyUoDFJot' +
'NFGm9BGm0ppv0OCwiCFRhtttAlttAlttNEmtOOhfbwEhUEKjTbaaBPaaBPaLmi/T4LCIIVGG220CW20CW200ab6aS+UoDBIodFGG21CG21C2wXt4yQoDFJotNFGm9BGm9BGe7BpL5KgMEih0UYbbUIbbULbBe0PSFAYpNBoo402oY02oY32YNP+oASFQQqNNtpoE9poE9poDzbtj' +
'0hQGKTQaKONNqGNNpXS/qkEhUEKfYwEhUEKjTbaaBPaaBPaaA827Y9LUBik0GijjTahHS3tn0lQGKTQCyQoDFJotNFGm9BGm9BGG22qn/anJCgMUmi00Uabwmv/RILCIIVukKAwSKHRRhttQhttQhtttKl+2p+UoDBIodFGG20Kr/09CQqDFPo9EhQGKTTaaKNNaKNNaKONNtVP+7' +
'MSFAYpNNpoo03htY+UoDBIodFGG21CG21CG220Ce14aH9egsIghUYb7bhq/1qCwiCFPlyCwiCFRhtttAlttAlttNEmtNGmSrV/KUFhkEL/QoLCIIUeJkFhkEKjjTbahDbahDbaaBPaaFOl2r+VoDBIoX8lQWGQQh8mQWGQQqONNtqENtqENtpoE9poE9oua/9AgsIghf6+BIVBCr2tBIV' +
'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\');' +
' background-repeat: no-repeat; background-position: center; background-size: cover; } rg-phone-sim .screen,[riot-tag="rg-phone-sim"] .screen,[data-is="rg-phone-sim"] .screen{ position: absolute; top: 105px; left: 22px; background-color: white; width: 320px; height: 568px; border: 0; }', "",
function(opts) {
this.on("before-mount", function() {
if (!opts.phonesim)
opts.phonesim = {
url: undefined
}
if (opts.url)
opts.phonesim.url = opts.url;
});
});
riot.tag("rg-placeholdit",
'
', "", "",
function(opts) {
this.on("before-mount", function() {
if (!opts.placeholdit) opts.placeholdit = {};
opts.placeholdit.width = opts.placeholdit.width || 450;
opts.placeholdit.height = opts.placeholdit.height || 250;
opts.placeholdit.background = opts.placeholdit.background || "000";
opts.placeholdit.color = opts.placeholdit.color || "fff";
opts.placeholdit.text = opts.placeholdit.text || opts.placeholdit.width + " x " + opts.placeholdit.height;
opts.placeholdit.textsize = opts.placeholdit.textsize || 30;
opts.placeholdit.format = opts.placeholdit.format || "png"
if (opts.width)
opts.placeholdit.width = Number(opts.width);
if (opts.height)
opts.placeholdit.height = Number(opts.height);
if (opts.background)
opts.placeholdit.background = opts.background;
if (opts.color)
opts.placeholdit.color = opts.color;
if (opts.text)
opts.placeholdit.text = opts.text;
if (opts.textsize)
opts.placeholdit.textsize = Number(opts.textsize);
if (opts.format)
opts.placeholdit.text = opts.format;
})
});
riot.tag2("rg-raw", "
", "", "", function(opts) {
this.on("mount update", function() {
this.root.innerHTML = opts.content || ""
})
});
/*
Note! Depends on rg-utils.js
HTML:
Script:
var tags = riot.mount('rg-select', {
select: {
placeholder: 'Please select a card',
filter: 'text', // <-- this enables filtering on the 'text' property
options: [{
id: 0,
text: 'Visa'
}, {
id: 1,
text: 'MasterCard'
//selected: true
}, {
id: 2,
text: 'American Express'
}, {
id: 3,
text: 'Discover'
}]
}
})
tags[0].on('open', function () {console.log("open") })
.on('close', function () { console.log("close") })
.on('select', function (item) { console.log("item=", item) })
*/
riot.tag("rg-select", '
' +
' ',
'rg-select .c-card--menu,[riot-tag="rg-select"] .c-card--menu,[data-is="rg-select"] .c-card--menu{ position: relative; }', "",
function(opts) {
var _this = this;
if (!opts.select) opts.select = {
options: []
};
var handleClickOutside = function handleClickOutside(e) {
if (!_this.root.contains(e.target)) _this.close();
_this.update()
};
var applyFieldText = function applyFieldText() {
for (var i = 0; i < opts.select.options.length; i++) {
var item = opts.select.options[i];
if (item.selected) {
_this.refs.selectfield.value = item.text;
break
}
}
};
this.filterOptions = function() {
_this.options = opts.select.options;
if (opts.select.filter) _this.options = _this.options.filter(function(option) {
var attr = option[opts.select.filter];
return attr && attr.toLowerCase().indexOf(_this.refs.selectfield.value.toLowerCase()) > -1
});
_this.trigger("filter", _this.refs.selectfield.value)
};
function getWindowDimensions() {
var w = window,
d = document,
e = d.documentElement,
g = d.getElementsByTagName("body")[0],
x = w.innerWidth || e.clientWidth || g.clientWidth,
y = w.innerHeight || e.clientHeight || g.clientHeight;
return {
width: x,
height: y
}
};
var positionDropdown = function positionDropdown() {
var w = getWindowDimensions();
var m = _this.root.querySelector(".c-card--menu");
if (!m) return;
if (!opts.select.isvisible) {
m.style.marginTop = "";
m.style.marginLeft = "";
return
};
var pos = m.getBoundingClientRect();
if (w.width < pos.left + pos.width) {
m.style.marginLeft = w.width - (pos.left + pos.width) - 20 + "px"
}
if (pos.left < 0) {
m.style.marginLeft = "20px"
}
if (w.height < pos.top + pos.height) {
m.style.marginTop = w.height - (pos.top + pos.height) - 20 + "px"
}
};
this.navigate = function(e) {
if ([13, 38, 40].indexOf(e.keyCode) > -1 && !opts.select.isvisible) {
e.preventDefault();
_this.open();
return true
}
var length = _this.options.length;
if (length > 0 && [13, 38, 40].indexOf(e.keyCode) > -1) {
e.preventDefault();
var activeIndex = null;
for (var i = 0; i < length; i++) {
var item = _this.options[i];
if (item.active) {
activeIndex = i;
break
}
}
if (activeIndex != null) _this.options[activeIndex].active = false;
if (e.keyCode == 38) {
if (activeIndex == null || activeIndex == 0) _this.options[length - 1].active = true;
else _this.options[activeIndex - 1].active = true
} else if (e.keyCode == 40) {
if (activeIndex == null || activeIndex == length - 1) _this.options[0].active = true;
else _this.options[activeIndex + 1].active = true;
} else if (e.keyCode == 13 && activeIndex != null) {
_this.select({
item: _this.options[activeIndex]
})
}
}
return true
};
this.open = function() {
opts.select.isvisible = true;
_this.trigger("open")
};
this.close = function() {
if (opts.select.isvisible) {
opts.select.isvisible = false;
_this.trigger("close")
}
};
this.select = function(e) {
opts.select.options.forEach(function(i) {
return i.selected = false
});
e.item.selected = true;
applyFieldText();
_this.filterOptions();
opts.select.isvisible = false;
_this.trigger("select", e.item)
};
this.on("before-mount", function() {
if (opts.filter) {
filter = toBoolean(opts.filter);
if (filter)
opts.select.filter = "text";
else
opts.select.filter = undefined;
}
if (opts.placeholder)
opts.select.placeholder = opts.placeholder;
});
this.on("mount", function() {
applyFieldText();
_this.filterOptions();
document.addEventListener("click", handleClickOutside);
_this.update()
});
this.on("update", function() {
if (!opts.select.filter) applyFieldText();
positionDropdown()
});
this.on("unmount", function() {
document.removeEventListener("click", handleClickOutside)
})
});
riot.tag("rg-tabs",
'
' +
'
' +
'
{heading}' +
'
' +
'
' +
'
' +
'
{text}
{include.responseText}' +
'
' +
'
' +
'
', "", "",
function(opts) {
var _this = this;
var fetch = function fetch(tab) {
var req = new XMLHttpRequest;
req.onload = function(resp) {
var activeTab = _this.root.querySelector(".c-tabs__tab--active");
if (activeTab) activeTab.innerHTML = req.responseText;
_this.trigger("loaded", tab)
};
req.open("get", tab.include, true);
req.send();
_this.trigger("loading", tab)
};
this.open = function(e) {
var tab = e.item;
if (!tab.disabled && !tab.active) {
opts.tabs.tabs.forEach(function(tab) {
tab.active = false
});
_this.trigger("open", tab);
tab.active = true
}
};
this.on("before-mount", function() {
if (!opts.tabs)
opts.tabs = {
style: 'default',
tabs: []
};
if (opts.style)
opts.tabs.style = opts.style;
});
this.on("update", function() {
if (!opts.tabs) opts.tabs = {};
if (!Array.isArray(opts.tabs.tabs)) return;
opts.tabs.tabs.forEach(function(tab) {
if (!tab.disabled && tab.active && tab.include) {
fetch(tab)
}
})
})
});
/*
Note! Depends on rg-utils.js
HTML:
Script:
var tags = riot.mount('rg-tags', {
tags: {
style: "brand",
placeholder: 'Choose a country',
filter: 'text', // <-- this enables filtering on the 'text' property
options: [{
text: 'England',
style: 'info'
}, {
text: 'Scotland',
}, {
text: 'Ireland',
style: 'warning'
}, {
text: 'Wales',
style: 'success'
}],
tags: [{
text: 'United States',
}]
}
})
tags[0].on('open', function () { console.log("open") })
.on('close', function () { console.log("close") })
.on('select', function (item) { console.log("select", item) })
*/
riot.tag("rg-tags",
'
',
'rg-tags .c-card--menu,[riot-tag="rg-tags"] .c-card--menu,[data-is="rg-tags"] .c-card--menu{ position: relative; }', "",
function(opts) {
var _this = this;
if (!opts.tags) opts.tags = {
options: [],
tags: []
}
else {
if (!opts.tags.style)
opts.tags.style = "default";
} // else..if
if (!opts.tags.options) opts.tags.options = [];
if (!opts.tags.tags) opts.tags.tags = [];
if (opts.style)
opts.tags.style = opts.style;
if (opts.placeholder)
opts.tags.placeholder = opts.placeholder;
if (opts.filter) {
filter = toBoolean(opts.filter);
if (filter)
opts.tags.filter = "text";
else
opts.tags.filter = undefined;
}
var defstyle = opts.tags.style;
for (i = 0; i < opts.tags.options.length; i++) {
if (!opts.tags.options[i].style)
opts.tags.options[i].style = defstyle;
} // for
for (i = 0; i < opts.tags.tags.length; i++) {
if (!opts.tags.tags[i].style)
opts.tags.tags[i].style = defstyle;
} // for
var handleClickOutside = function handleClickOutside(e) {
if (!_this.root.contains(e.target)) _this.close();
_this.update()
};
var applyFieldText = function applyFieldText() {
_this.refs.selectfield.value = "";
for (var i = 0; i < opts.tags.options.length; i++) {
var item = opts.tags.options[i];
item.selected = false
}
};
this.filterOptions = function() {
_this.options = opts.tags.options;
if (opts.tags.filter) _this.options = _this.options.filter(function(option) {
var attr = option[opts.tags.filter];
return attr && attr.toLowerCase().indexOf(_this.refs.selectfield.value.toLowerCase()) > -1
});
_this.trigger("filter", _this.refs.selectfield.value)
};
function getWindowDimensions() {
var w = window,
d = document,
e = d.documentElement,
g = d.getElementsByTagName("body")[0],
x = w.innerWidth || e.clientWidth || g.clientWidth,
y = w.innerHeight || e.clientHeight || g.clientHeight;
return {
width: x,
height: y
}
}
var positionDropdown = function positionDropdown() {
var w = getWindowDimensions();
var m = _this.root.querySelector(".c-card--menu");
if (!m) return;
if (!opts.tags.isvisible) {
m.style.marginTop = "";
m.style.marginLeft = "";
return
}
var pos = m.getBoundingClientRect();
if (w.width < pos.left + pos.width) {
m.style.marginLeft = w.width - (pos.left + pos.width) - 20 + "px"
}
if (pos.left < 0) {
m.style.marginLeft = "20px"
}
if (w.height < pos.top + pos.height) {
m.style.marginTop = w.height - (pos.top + pos.height) - 20 + "px"
}
};
this.navigate = function(e) {
if ([13, 38, 40].indexOf(e.keyCode) > -1 && !opts.tags.isvisible) {
e.preventDefault();
_this.open();
return true
}
var length = _this.options.length;
if (length > 0 && [13, 38, 40].indexOf(e.keyCode) > -1) {
e.preventDefault();
var activeIndex = null;
for (var i = 0; i < length; i++) {
var item = _this.options[i];
if (item.active) {
activeIndex = i;
break
}
}
if (activeIndex != null) _this.options[activeIndex].active = false;
if (e.keyCode == 38) {
if (activeIndex == null || activeIndex == 0) _this.options[length - 1].active = true;
else _this.options[activeIndex - 1].active = true
} else if (e.keyCode == 40) {
if (activeIndex == null || activeIndex == length - 1) _this.options[0].active = true;
else _this.options[activeIndex + 1].active = true
} else if (e.keyCode == 13 && activeIndex != null) {
_this.select({
item: _this.options[activeIndex]
})
}
}
return true
};
this.open = function() {
opts.tags.isvisible = true;
_this.trigger("open")
};
this.close = function() {
if (opts.tags.isvisible) {
opts.tags.isvisible = false;
_this.trigger("close")
}
};
this.select = function(e) {
opts.tags.options.forEach(function(i) {
return i.selected = false
});
e.item.selected = true;
_this.addTag(e.item);
applyFieldText();
_this.filterOptions();
_this.trigger("select", e.item)
};
this.addTag = function(item) {
if (opts.tags.tags.indexOf(item) == -1) {
opts.tags.tags.push(item)
}
};
this.removeTag = function(e) {
opts.tags.tags = opts.tags.tags.filter(function(tag) {
if (tag._id != e.item._id) return tag
})
};
this.on("mount", function() {
applyFieldText();
_this.filterOptions();
document.addEventListener("click", handleClickOutside);
_this.update()
});
this.on("update", function() {
opts.tags.options.forEach(function(item) {
item._id = item._id || (Math.floor(Math.random() * 60466175) + 1679615).toString(36)
});
opts.tags.tags.forEach(function(tag) {
tag._id = tag._id || (Math.floor(Math.random() * 60466175) + 1679615).toString(36)
});
if (!opts.tags.filter) applyFieldText();
positionDropdown()
});
this.on("unmount", function() {
document.removeEventListener("click", handleClickOutside)
})
});
riot.tag("rg-toasts",
'
', "", "",
function(opts) {
var _this = this;
this.toastClicked = function(e) {
var toast = e.item;
window.clearTimeout(toast.timer);
toast.isvisible = false;
_this.trigger("select", toast)
};
var _uid = 1;
var uid = function uid() {
return _uid++
};
this.on("mount", function() {
if (!opts.toasts || !Array.isArray(opts.toasts.toasts)) return;
opts.toasts.position = opts.toasts.position || "bottomright";
opts.toasts.toasts.forEach(function(toast) {
if (typeof toast.isvisible == "undefined") toast.isvisible = true;
toast.id = toast.id || uid();
if (!toast.timer && !toast.sticky) {
toast.startTimer = function() {
toast.timer = window.setTimeout(function() {
toast.isvisible = false;
_this.trigger("close", toast);
_this.update()
}, toast.timeout || 6e3)
};
toast.startTimer()
}
});
opts.toasts.isvisible = opts.toasts.toasts.filter(function(toast) {
return toast.isvisible
}).length > 0
})
});
/*
Note! Depends on rg-utils.js
HTML:
Script:
var tags = riot.mount('rg-toggle', {
toggle: {
text: 'My Thang',
style: 'success',
checked: false
}
})
tags[0].on('toggle', function (checked) { console.log("state", checked) })
*/
riot.tag("rg-toggle",
'
',
".c-toggle{padding-top: 0.5vh;}", "",
function(opts) {
var _this = this;
if (!opts.toggle) {
opts.toggle = {
style: "default"
}
}
if (opts.toggle.text) opts.toggle.text = toMarkdown(opts.toggle.text) ;
if (opts.text) opts.toggle.text = toMarkdown(opts.text);
if (opts.style) opts.toggle.style = opts.style;
if (opts.checked) opts.toggle.checked = toBoolean(opts.checked);
this.on("mount", function() {
if (!opts.toggle) opts.toggle = {
checked: false
}
});
this.toggle = function() {
opts.toggle.checked = !opts.toggle.checked;
_this.trigger("toggle", opts.toggle.checked)
}
});
riot.tag2("rg-unsplash",
'
', "", "",
function(opts) {
var _this = this;
this.on("before-mount", function() {
_this.options = "";
if (!opts.unsplash) opts.unsplash = {};
opts.unsplash.width = opts.unsplash.width || 450;
opts.unsplash.height = opts.unsplash.height || 250;
if (opts.unsplash.greyscale) opts.unsplash.greyscale = "g/";
if (opts.unsplash.random) _this.options += "random&";
if (opts.unsplash.blur) _this.options += "blur&";
if (opts.unsplash.image) _this.options += "image=" + opts.unsplash.image + "&";
if (typeof opts.unsplash.gravity !== "undefined") _this.options += "gravity=" + opts.unsplash.gravity
if (opts.width)
opts.unsplash.width = Number(opts.width);
if (opts.height)
opts.unsplash.height = Number(opts.height);
if (opts.image)
opts.unsplash.image = "image=" + Number(opts.image) + "&";
})
});