j-ListMenuEditable
Component for editable list menu
- You can change CSS for your needs.
Configuration:
iconremove {String}optional, changeremovebutton icon. It's fontawesome icon withoutti-part (default:times)defaulticon {String}optional, changeeditbutton icon (default:pencil-alt)addicon {String}optional, will changeaddbutton icon (default:plus-square)placeholder {String}optional, a placeholder for input (default:Write text and press ENTER)class {String}CSS class for selected item (default:selected)title {String}optional, will add title on top of list menu (important if you want useaddiconandaddclick)key {String}optional, a defaultkeyfortextvalue (default:name)click {String}optional, action after click on item in menu. Path to function(element, index)addclick {String}optional, action after click onaddbutton. Path to function() executes when user click onaddiconeditclick {String}optional, action after click oneditbutton. Path to function(element, index)
Methods:
component.add(object)- This function will push object into path (can be null)component.edit(index)- Function will enable edit on elementcomponent.remove(index)- Function will remove the index
Good to know:
Path must be array of objects. After click on item in menu
Supports dynamic evaluation of the content of <script type="text/html">. The example below contains a script with HTML and the component evaluates the content when the component is creating (only once).
<ui-component name="listmenueditable" path="tags">
<script type="text/html">
{{ if mycolor }}
<i class="ti ti-circle" style="color: {{ mycolor }}"></i>
{{ fi }}
{{ name }}
</script>
</ui-component>Adding of custom class:
var opt = {};
opt.items = [];
opt.push({ name: 'Total.js', classname: 'your_class_name' });Toggle editable:
var opt = {};
opt.items = [];
opt.push({ name: 'Total.js', editable: true });Use it with <ui-component name="listmenueditable">. When the component is not loaded yet, jComponent downloads it on first use from the address in DEF.fallback (the Componentator CDN by default). Author: Denis Granec. Source: the Componentator components repository, MIT license.
<!-- EXAMPLE DEPENDENCIES -->
<ui-component name="menu"></ui-component>
<div style="width: 400px;">
<ui-component name="listmenueditable" path="tags" config="title:All tags;editclick:edit;addclick:add;click:click">
<script type="text/html">
{{ if mycolor }}
<i class="ti ti-circle-alt" style="color: {{ mycolor }}"></i>
{{ fi }}
{{ name }}
</script>
</ui-component>
</div>
<script>
var tags = [{ name: 'Tag 1', mycolor: '#00B9D7', editable: true, classname: 'customclass', mycustomdata: 'ola' }, { name: 'Tag 2', mycolor: '#00A06E', editable: true, mycustomdata: 'ola2' }];
function click(el, item, index) {
console.log('clicked index', index, 'item', item);
}
function edit(el, index, icon) {
var opt = {};
opt.items = [{ name: 'Edit', id: 'edit' }, { name: 'Remove', icon: 'trash', id: 'remove' }];
opt.align = 'center';
opt.element = icon;
opt.callback = function(selected) {
switch (selected.id) {
case 'edit':
SETTER('listmenueditable/edit', index);
break;
case 'remove':
SETTER('listmenueditable/remove', index);
break;
}
};
SETTER('menu/show', opt);
}
function add() {
SETTER('listmenueditable/add', { name: 'New tag', mycolor: '#8e44ad', editable: true });
}
</script>