diff --git a/.gitignore b/.gitignore index 99ff85c..e8322ae 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ /nbproject/ /temp/ +*.html +*.svg \ No newline at end of file diff --git a/README.md b/README.md index ffc748b..e697466 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ -# jQuery Menu Editor 1.1.0 -# >>> [DEMO](https://davicotico.github.io/jQuery-Menu-Editor/) +# jQuery Menu Editor 1.1.1 +# >>> [DEMO](https://davidticona.com/demos/jQuery-Menu-Editor/) ### Features * Add, Update & Remove items from Menu * Multilevel Drag & Drop * Form Item Editor -* Include IconPicker Plugin (https://victor-valencia.github.com/bootstrap-iconpicker) -* Support to mobile devices +* Include IconPicker Plugin (https://victor-valencia.github.io/bootstrap-iconpicker) +* Support for mobile devices * Load data from JSON string -* The output is a Json string +* The output is a JSON string This project is based on jQuery-Sortable-lists (v1.4.0) http://camohub.github.io/jquery-sortable-lists/index.html and added many features. @@ -22,14 +22,14 @@ This project is based on jQuery-Sortable-lists (v1.4.0) http://camohub.github.io ## How to use ### Include the Css and scripts ```html - - + + - + diff --git a/jquery-menu-editor.js b/jquery-menu-editor.js index 1367540..8da2958 100644 --- a/jquery-menu-editor.js +++ b/jquery-menu-editor.js @@ -1,7 +1,7 @@ /** * jQuery Menu Editor * @author David Ticona Saravia https://github.com/davicotico - * @version 1.1.0 + * @version 1.1.1 * */ ( function( $ ) { diff --git a/jquery-menu-editor.min.js b/jquery-menu-editor.min.js index 23cb01c..484ed4f 100644 --- a/jquery-menu-editor.min.js +++ b/jquery-menu-editor.min.js @@ -1,4 +1,4 @@ -function MenuEditor(e,s){var t=$("#"+e).data("level","0"),l={labelEdit:'',labelRemove:'',textConfirmDelete:"This item will be deleted. Are you sure?",iconPicker:{cols:4,rows:4,footer:!1,iconset:"fontawesome5"},maxLevel:-1,listOptions:{hintCss:{border:"1px dashed #13981D"},opener:{as:"html",close:'',open:'',openerCss:{"margin-right":"10px",float:"none"},openerClass:"btn btn-success btn-sm"},placeholderCss:{"background-color":"gray"},ignoreClass:"clickable",listsClass:"pl-0",listsCss:{"padding-top":"10px"},complete:function(e){return MenuEditor.updateButtons(t),t.updateLevels(0),!0},isAllowed:function(e,s,t){return h(e,t)}}};$.extend(!0,l,s);var n=null,o=!0,i=null,r=null,a=l.iconPicker,c=(s=l.listOptions,$("#"+e+"_icon").iconpicker(a));function d(){i[0].reset(),(c=c.iconpicker(a)).iconpicker("setIcon","empty"),r.attr("disabled",!0),n=null}function p(e){return $("").addClass(e.classCss).addClass("clickable").attr("href","#").html(e.text)}function u(){var e=$("
").addClass("btn-group float-right"),s=p({classCss:"btn btn-primary btn-sm btnEdit",text:l.labelEdit}),t=p({classCss:"btn btn-danger btn-sm btnRemove",text:l.labelRemove}),n=p({classCss:"btn btn-secondary btn-sm btnUp btnMove",text:''}),o=p({classCss:"btn btn-secondary btn-sm btnDown btnMove",text:''}),i=p({classCss:"btn btn-secondary btn-sm btnOut btnMove",text:''}),r=p({classCss:"btn btn-secondary btn-sm btnIn btnMove",text:''});return e.append(n).append(o).append(r).append(i).append(s).append(t),e}function f(e){$("").addClass("sortableListsOpener "+s.opener.openerClass).css(s.opener.openerCss).on("mousedown touchstart",function(e){var t=$(this).closest("li");return t.hasClass("sortableListsClosed")?t.iconOpen(s):t.iconClose(s),!1}).prependTo(e.children("div").first()),e.hasClass("sortableListsOpen")?e.iconOpen(s):e.iconClose(s)}function h(e,s){if(l.maxLevel<0)return!0;var t=0,n=e.find("ul").length;return t=0==s.length?0:parseInt(s.parent().data("level"))+1,console.log(t+n),t+n<=l.maxLevel}t.sortableLists(l.listOptions),c.on("change",function(e){i.find("[name=icon]").val(e.icon)}),t.on("click",".btnRemove",function(s){if(s.preventDefault(),confirm(l.textConfirmDelete)){var n=$(this).closest("ul");$(this).closest("li").remove();var o=!1;void 0!==n.attr("id")&&(o=n.attr("id").toString()===e),n.children().length||o||(n.prev("div").children(".sortableListsOpener").first().remove(),n.remove()),MenuEditor.updateButtons(t)}}),t.on("click",".btnEdit",function(e){e.preventDefault(),function(e){var s=e.data();$.each(s,function(e,s){i.find("[name="+e+"]").val(s)}),i.find(".item-menu").first().focus(),s.hasOwnProperty("icon")?c.iconpicker("setIcon",s.icon):c.iconpicker("setIcon","empty");r.removeAttr("disabled")}(n=$(this).closest("li"))}),t.on("click",".btnUp",function(e){e.preventDefault();var s=$(this).closest("li");s.prev("li").before(s),MenuEditor.updateButtons(t)}),t.on("click",".btnDown",function(e){e.preventDefault();var s=$(this).closest("li");s.next("li").after(s),MenuEditor.updateButtons(t)}),t.on("click",".btnOut",function(e){e.preventDefault();var s=$(this).closest("ul"),l=$(this).closest("li");l.closest("ul").closest("li").after(l),s.children().length<=0&&(s.prev("div").children(".sortableListsOpener").first().remove(),s.remove()),MenuEditor.updateButtons(t),t.updateLevels()}),t.on("click",".btnIn",function(e){e.preventDefault();var s=$(this).closest("li"),l=s.prev("li");if(!h(s,l))return!1;if(l.length>0)if((n=l.children("ul")).length>0)n.append(s);else{var n=$("