<!DOCTYPE html>
<html>
<head>
<title>Mithril example</title>
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="https://cdn.rawgit.com/drublic/css-modal/master/build/modal.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/mithril/0.1.26/mithril.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script>
</head>
<body>
<h3>Mithril example</h3>
<p>start searching for title</p>
<div id="node-search"></div>
<script src="script.js"></script>
</body>
</html>
var search = {};
// simulate content from drupal
search.model = function(){
var db = [
{
id: 1,
title: 'Title 1',
content: 'Content 1'
},
{
id: 2,
title: 'Title 2',
content: 'Content 2'
},
{
id: 3,
title: 'Title 3',
content: 'Content 3'
}
];
this.data = m.prop([]);
this.find = function(needle){
var regex = new RegExp(needle, 'i'),
result = _.filter(db, function(node){
return regex.test(node.title);
});
this.data(result);
}
this.getData = function(){
return this.data();
}
};
search.controller = function () {
var model = new search.model();
return {
searchList: model,
widgets: search.widgets,
find: function(val){
model.find(val);
}
};
};
// view helpers
search.widgets = {};
// css-modal
search.widgets.dialog = function(node){
return m('section#modal-' + node.id + '.modal--show', [
m('.modal-inner', [
m('header#modal-label-'+ node.id, node.title),
m('.modal-content', node.content)
]),
m('a.modal-close[href="#void"]', 'x')
]);
}
search.view = function (ctrl) {
return [
m('p', m('input', {oninput: m.withAttr("value", ctrl.find)})),
m('ul', ctrl.searchList.getData().map(function (node) {
return m('li', m('a[href="#modal-' + node.id + '"]', node.title));
})),
ctrl.searchList.getData().map(function (node) {
return ctrl.widgets.dialog(node);
})
];
};
m.module(document.getElementById('node-search'), search);