New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

bb-collection-view

Package Overview
Dependencies
Maintainers
2
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bb-collection-view - npm Package Compare versions

Comparing version 0.11.2 to 0.11.3

4

dist/backbone.collectionView.js

@@ -306,7 +306,7 @@ /*!

// we won't need the other ones later, so no need to detach them individually.
if( this.reuseModelViews && _this.collection.get( thisModelView.model.cid ) )
if( this.reuseModelViews && this.collection.get( thisModelView.model.cid ) )
thisModelView.$el.detach();
else
thisModelView.remove();
} );
}, this );

@@ -313,0 +313,0 @@ modelViewContainerEl.empty();

@@ -8,2 +8,2 @@ /*!

!function(a,b){"function"==typeof define&&define.amd?define(["underscore","backbone","jquery"],b):"undefined"!=typeof exports?module.exports=b(require("underscore"),require("backbone"),require("backbone").$):b(a._,a.Backbone,a.jQuery||a.Zepto||a.$)}(this,function(a,b,c){function d(b){var c=[];if(!a.isArray(b))throw new Error("Option declarations must be an array.");return a.each(b,function(b){var d,e,f;if(e=!1,f=void 0,a.isString(b))d=b;else{if(!a.isObject(b))throw new Error("Each element in the option declarations array must be either a string or an object.");d=a.first(a.keys(b)),f=a.clone(b[d])}"!"===d[d.length-1]&&(e=!0,d=d.slice(0,d.length-1)),c.push({name:d,required:e,defaultValue:f})}),c}var e=b.View,f="model",g=["collection","modelView","modelViewOptions","itemTemplate","selectableModelsFilter","sortableModelsFilter","visibleModelsFilter","itemTemplateFunction","detachedRendering","sortableOptions"],h={background:"transparent",border:"none","box-shadow":"none"};return b.CollectionView=b.View.extend({tagName:"ul",events:{"mousedown li, td":"_listItem_onMousedown","dblclick li, td":"_listItem_onDoubleClick",click:"_listBackground_onClick","click ul.collection-list, table.collection-list":"_listBackground_onClick",keydown:"_onKeydown"},spawnMessages:{focus:"focus"},passMessages:{"*":"."},initializationOptions:[{collection:new b.Collection},{modelView:null},{modelViewOptions:{}},{itemTemplate:null},{itemTemplateFunction:null},{selectable:!0},{clickToSelect:!0},{selectableModelsFilter:null},{visibleModelsFilter:null},{sortableModelsFilter:null},{selectMultiple:!1},{clickToToggle:!1},{processKeyEvents:!0},{sortable:!1},{sortableOptions:null},{reuseModelViews:!0},{detachedRendering:!1},{emptyListCaption:null}],initialize:function(a){b.ViewOptions.add(this,"initializationOptions"),this.setOptions(a),this._hasBeenRendered=!1,this._isBackboneCourierAvailable()&&b.Courier.add(this),this.$el.data("view",this),this.$el.addClass("collection-list"),this.selectable&&this.$el.addClass("selectable"),this.processKeyEvents&&this.$el.attr("tabindex",0),this.selectedItems=[],this._updateItemTemplate(),this.collection&&this._registerCollectionEvents(),this.viewManager=new ChildViewContainer},onOptionsChanged:function(b,c){var d=!1,e=this;a.each(a.keys(b),function(f){var h=b[f],i=c[f];switch(f){case"collection":h!==i&&(e.stopListening(i),e._registerCollectionEvents());break;case"selectMultiple":!h&&e.selectedItems.length>1&&e.setSelectedModel(a.first(e.selectedItems),{by:"cid"});break;case"selectable":!h&&e.selectedItems.length>0&&e.setSelectedModels([]);break;case"selectableModelsFilter":h&&a.isFunction(h)&&e._validateSelection();break;case"itemTemplate":e._updateItemTemplate();break;case"processKeyEvents":h&&e.$el.attr("tabindex",0);break;case"modelView":e.viewManager.each(function(a){e.viewManager.remove(a),a.remove()})}a.contains(g,f)&&(d=!0)}),this._hasBeenRendered&&d&&this.render()},setOption:function(a,b){var c={};c[a]=b,this.setOptions(c)},getSelectedModel:function(b){return a.first(this.getSelectedModels(b))},getSelectedModels:function(b){var d=this;b=a.extend({},{by:f},b);var e=b.by,g=[];switch(e){case"id":a.each(this.selectedItems,function(a){g.push(d.collection.get(a).id)});break;case"cid":g=g.concat(this.selectedItems);break;case"offset":var h=0,i=this._getVisibleItemEls();i.each(function(){var a=c(this);a.is(".selected")&&g.push(h),h++});break;case"model":a.each(this.selectedItems,function(a){g.push(d.collection.get(a))});break;case"view":a.each(this.selectedItems,function(a){g.push(d.viewManager.findByModel(d.collection.get(a)))})}return g},setSelectedModels:function(b,d){if(!a.isArray(b))throw"Invalid parameter value";if(this.selectable||!(b.length>0)){d=a.extend({},{silent:!1,by:f},d);var e=d.by,g=[];switch(e){case"cid":g=b;break;case"id":this.collection.each(function(c){a.contains(b,c.id)&&g.push(c.cid)});break;case"model":g=a.pluck(b,"cid");break;case"view":a.each(b,function(a){g.push(a.model.cid)});break;case"offset":var h=0,i=this._getVisibleItemEls();i.each(function(){var d=c(this);a.contains(b,h)&&g.push(d.attr("data-model-cid")),h++})}var j=this.getSelectedModels(),k=a.clone(this.selectedItems);this.selectedItems=this._convertStringsToInts(g),this._validateSelection();var l=this.getSelectedModels();this._containSameElements(k,this.selectedItems)||(this._addSelectedClassToSelectedItems(k),d.silent||(this.trigger("selectionChanged",l,j),this._isBackboneCourierAvailable()&&this.spawn("selectionChanged",{selectedModels:l,oldSelectedModels:j})),this.updateDependentControls())}},setSelectedModel:function(a,b){a||0===a?this.setSelectedModels([a],b):this.setSelectedModels([],b)},render:function(){var b=this;this._hasBeenRendered=!0,this.selectable&&this._saveSelection();var c;c=this._getContainerEl();var d=this.viewManager;this.viewManager=new ChildViewContainer,d.each(function(a){this.reuseModelViews&&b.collection.get(a.model.cid)?a.$el.detach():a.remove()}),c.empty();var e;if(this.detachedRendering&&(e=document.createDocumentFragment()),this.collection.each(function(b){var f=d.findByModelCid(b.cid);(!this.reuseModelViews||a.isUndefined(f))&&(f=this._createNewModelView(b,this._getModelViewOptions(b))),this._insertAndRenderModelView(f,e||c)},this),this.detachedRendering&&c.append(e),this.sortable){var f=a.extend({axis:"y",distance:10,forcePlaceholderSize:!0,start:a.bind(this._sortStart,this),change:a.bind(this._sortChange,this),stop:a.bind(this._sortStop,this),receive:a.bind(this._receive,this),over:a.bind(this._over,this)},a.result(this,"sortableOptions"));b._isRenderedAsTable()?f.items="> tbody > tr:not(.not-sortable)":b._isRenderedAsList()&&(f.items="> li:not(.not-sortable)"),this.$el=this.$el.sortable(f)}this._showEmptyListCaptionIfAppropriate(),this.trigger("render"),this._isBackboneCourierAvailable()&&this.spawn("render"),this.selectable&&(this._restoreSelection(),this.updateDependentControls()),a.isFunction(this.onAfterRender)&&this.onAfterRender()},_showEmptyListCaptionIfAppropriate:function(){if(this.emptyListCaption){var b=this._getVisibleItemEls();if(0===b.length){var d;d=a.isFunction(this.emptyListCaption)?this.emptyListCaption():this.emptyListCaption;var e=c("<var class='empty-list-caption'>"+d+"</var>");$emptyListCaptionEl=this._isRenderedAsList()?e.wrapAll("<li class='not-sortable'></li>").parent().css(h):e.wrapAll("<tr class='not-sortable'><td></td></tr>").parent().parent().css(h),this._getContainerEl().append($emptyListCaptionEl)}}},_removeEmptyListCaption:function(){this._isRenderedAsList()?this._getContainerEl().find("> li > var.empty-list-caption").parent().remove():this._getContainerEl().find("> tr > td > var.empty-list-caption").parent().parent().remove()},_insertAndRenderModelView:function(b,c,d){var e=this._wrapModelView(b);11===c.nodeType?c.appendChild(e.get(0)):!a.isUndefined(d)&&d>=0&&d<c.children().length-1?c.children().eq(d).before(e):c.append(e);var f=b.render();f===!1&&(e.hide(),e.addClass("not-visible"));var g=!1;a.isFunction(this.visibleModelsFilter)&&(g=!this.visibleModelsFilter(b.model),g&&(1===e.children().length?e.hide():b.$el.hide(),e.addClass("not-visible"))),!g&&this.emptyListCaption&&this._removeEmptyListCaption(),this.viewManager.add(b)},updateDependentControls:function(){this.trigger("updateDependentControls",this.getSelectedModels()),this._isBackboneCourierAvailable()&&this.spawn("updateDependentControls",{selectedModels:this.getSelectedModels()})},remove:function(){this.viewManager.each(function(a){a.remove()}),b.View.prototype.remove.apply(this,arguments)},_removeModelView:function(a){var b=this.viewManager,c=b.findByModelCid(a.cid);this.selectable&&this._saveSelection(),b.remove(c),c.remove(),this._getContainerEl().children("[data-model-cid="+a.cid+"]").remove(),this.selectable&&this._restoreSelection(),this._showEmptyListCaptionIfAppropriate()},_validateSelectionAndRender:function(){this._validateSelection(),this.render()},_registerCollectionEvents:function(){this.listenTo(this.collection,"add",function(a){if(this._hasBeenRendered){var b=this._createNewModelView(a,this._getModelViewOptions(a));this._insertAndRenderModelView(b,this._getContainerEl(),this.collection.indexOf(a))}this._isBackboneCourierAvailable()&&this.spawn("add")}),this.listenTo(this.collection,"remove",function(a){this._hasBeenRendered&&this._removeModelView(a),this._isBackboneCourierAvailable()&&this.spawn("remove")}),this.listenTo(this.collection,"reset",function(){this._hasBeenRendered&&this.render(),this._isBackboneCourierAvailable()&&this.spawn("reset")}),this.listenTo(this.collection,"sort",function(a,b){this._hasBeenRendered&&b.add!==!0&&this.render(),this._isBackboneCourierAvailable()&&this.spawn("sort")})},_getContainerEl:function(){if(this._isRenderedAsTable()){var a=this.$el.find("> tbody");if(a.length>0)return a}return this.$el},_getClickedItemId:function(a){var b=null,d=c(a.currentTarget);if(d.closest(".collection-list").get(0)===this.$el.get(0)){var e=d.closest("[data-model-cid]");return e.length>0&&(b=e.attr("data-model-cid"),c.isNumeric(b)&&(b=parseInt(b,10))),b}},_updateItemTemplate:function(){var b;if(this.itemTemplate){if(0===c(this.itemTemplate).length)throw"Could not find item template from selector: "+this.itemTemplate;b=c(this.itemTemplate).html()}else b=this.$(".item-template").html();b&&(this.itemTemplateFunction=a.template(b))},_validateSelection:function(){var b=a.pluck(this.collection.models,"cid");this.selectedItems=a.intersection(b,this.selectedItems),a.isFunction(this.selectableModelsFilter)&&(this.selectedItems=a.filter(this.selectedItems,function(a){return this.selectableModelsFilter.call(this,this.collection.get(a))},this))},_saveSelection:function(){if(!this.selectable)throw"Attempt to save selection on non-selectable list";this.savedSelection={items:a.clone(this.selectedItems),offset:this.getSelectedModel({by:"offset"})}},_restoreSelection:function(){if(!this.savedSelection)throw"Attempt to restore selection but no selection has been saved!";this.setSelectedModels([],{silent:!0}),this.savedSelection.items.length>0&&(this.setSelectedModels(this.savedSelection.items,{by:"cid",silent:!0}),0===this.selectedItems.length&&this.setSelectedModel(this.savedSelection.offset,{by:"offset"}),this.selectedItems.length!==this.savedSelection.items.length&&(this.trigger("selectionChanged",this.getSelectedModels(),[]),this._isBackboneCourierAvailable()&&this.spawn("selectionChanged",{selectedModels:this.getSelectedModels(),oldSelectedModels:[]}))),delete this.savedSelection},_addSelectedClassToSelectedItems:function(b){a.isUndefined(b)&&(b=[]);var c=b;c=a.without(c,this.selectedItems),a.each(c,function(a){this._getContainerEl().find("[data-model-cid="+a+"]").removeClass("selected")},this);var d=this.selectedItems;d=a.without(d,b),a.each(d,function(a){this._getContainerEl().find("[data-model-cid="+a+"]").addClass("selected")},this)},_reorderCollectionBasedOnHTML:function(){var a=this;this._getContainerEl().children().each(function(){var b=c(this).attr("data-model-cid");if(b){var d=a.collection.get(b);d&&(a.collection.remove(d,{silent:!0}),a.collection.add(d,{silent:!0,sort:!a.collection.comparator}))}}),this.collection.trigger("reorder"),this._isBackboneCourierAvailable()&&this.spawn("reorder"),this.collection.comparator&&this.collection.sort()},_getModelViewConstructor:function(){return this.modelView||e},_getModelViewOptions:function(b){return a.extend({model:b},this.modelViewOptions)},_createNewModelView:function(b,c){var d=this._getModelViewConstructor(b);if(a.isUndefined(d))throw"Could not find modelView constructor for model";var e=new d(c);return e.collectionListView=this,e},_wrapModelView:function(b){var c,d=this;return this._isRenderedAsTable()?c=b.$el.attr("data-model-cid",b.model.cid):this._isRenderedAsList()&&(c="li"===b.$el.prop("tagName").toLowerCase()?b.$el.attr("data-model-cid",b.model.cid):b.$el.wrapAll("<li data-model-cid='"+b.model.cid+"'></li>").parent()),a.isFunction(this.sortableModelsFilter)&&(this.sortableModelsFilter.call(d,b.model)||c.addClass("not-sortable")),a.isFunction(this.selectableModelsFilter)&&(this.selectableModelsFilter.call(d,b.model)||c.addClass("not-selectable")),c},_convertStringsToInts:function(b){return a.map(b,function(b){if(!a.isString(b))return b;var c=parseInt(b,10);return c==b?c:b})},_containSameElements:function(b,c){if(b.length!=c.length)return!1;var d=a.intersection(b,c).length;return d==b.length},_isRenderedAsTable:function(){return"table"===this.$el.prop("tagName").toLowerCase()},_isRenderedAsList:function(){return!this._isRenderedAsTable()},_getVisibleItemEls:function(){var a=[];return a=this._getContainerEl().find("> [data-model-cid]:not(.not-visible)")},_charCodes:{upArrow:38,downArrow:40},_isBackboneCourierAvailable:function(){return!a.isUndefined(b.Courier)},_sortStart:function(a,b){var c=this.collection.get(b.item.attr("data-model-cid"));this.trigger("sortStart",c),this._isBackboneCourierAvailable()&&this.spawn("sortStart",{modelBeingSorted:c})},_sortChange:function(a,b){var c=this.collection.get(b.item.attr("data-model-cid"));this.trigger("sortChange",c),this._isBackboneCourierAvailable()&&this.spawn("sortChange",{modelBeingSorted:c})},_sortStop:function(a,b){var c=this.collection.get(b.item.attr("data-model-cid")),d=this._getContainerEl(),e=d.children().index(b.item);-1==e&&c&&this.collection.remove(c),c&&(this._reorderCollectionBasedOnHTML(),this.updateDependentControls(),this.trigger("sortStop",c,e),this._isBackboneCourierAvailable()&&this.spawn("sortStop",{modelBeingSorted:c,newIndex:e}))},_receive:function(a,b){var c=b.sender,d=c.data("view");if(d&&d.collection){var e=this._getContainerEl().children().index(b.item),f=d.collection.get(b.item.attr("data-model-cid"));d.collection.remove(f),this.collection.add(f,{at:e}),f.collection=this.collection,this.setSelectedModel(f)}},_over:function(){this._getContainerEl().find("> var.empty-list-caption").hide()},_onKeydown:function(a){if(!this.processKeyEvents)return!0;var b=!1;if(1==this.getSelectedModels({by:"offset"}).length){var c=this.getSelectedModel({by:"offset"});a.which===this._charCodes.upArrow&&0!==c?(this.setSelectedModel(c-1,{by:"offset"}),b=!0):a.which===this._charCodes.downArrow&&c!==this.collection.length-1&&(this.setSelectedModel(c+1,{by:"offset"}),b=!0)}return!b},_listItem_onMousedown:function(b){if(this.selectable&&this.clickToSelect){var c=this._getClickedItemId(b);if(c){if(a.isFunction(this.selectableModelsFilter)&&!this.selectableModelsFilter.call(this,this.collection.get(c)))return;if(this.selectMultiple&&b.shiftKey){var d=-1;this.selectedItems.length>0&&this.collection.find(function(b){return d++,a.contains(this.selectedItems,b.cid)},this);var e=-1;this.collection.find(function(a){return e++,a.cid==c},this);for(var f=-1==d?e:d,g=Math.min(e,f),h=Math.max(e,f),i=[],j=g;h>=j;j++)i.push(this.collection.at(j).cid);if(this.setSelectedModels(i,{by:"cid"}),document.selection&&document.selection.empty)document.selection.empty();else if(window.getSelection){var k=window.getSelection();k&&k.removeAllRanges&&k.removeAllRanges()}}else this.selectMultiple&&(this.clickToToggle||b.metaKey)?a.contains(this.selectedItems,c)?this.setSelectedModels(a.without(this.selectedItems,c),{by:"cid"}):this.setSelectedModels(a.union(this.selectedItems,c),{by:"cid"}):this.setSelectedModels([c],{by:"cid"})}else this.setSelectedModels([])}},_listItem_onDoubleClick:function(a){var b=this._getClickedItemId(a);if(b){var c=this.collection.get(b);this.trigger("doubleClick",c),this._isBackboneCourierAvailable()&&this.spawn("doubleClick",{clickedModel:c})}},_listBackground_onClick:function(a){this.selectable&&c(a.target).is(".collection-list")&&this.setSelectedModels([])}},{setDefaultModelViewConstructor:function(a){e=a}}),b.ViewOptions={},b.ViewOptions.add=function(b,c){a.isUndefined(c)&&(c="options"),b.setOptions=function(b){var e=this,f={},g={},h=a.result(this,c);if(!a.isUndefined(h)){var i=d(h);a.each(i,function(c){if(thisOptionName=c.name,thisOptionRequired=c.required,thisOptionDefaultValue=c.defaultValue,thisOptionRequired&&(!b||!a.contains(a.keys(b),thisOptionName)&&a.isUndefined(e[thisOptionName])||a.isUndefined(b[thisOptionName])))throw new Error('Required option "'+thisOptionName+'" was not supplied.');b&&thisOptionName in b?(a.isUndefined(e[thisOptionName])||(g[thisOptionName]=e[thisOptionName],f[thisOptionName]=b[thisOptionName]),e[thisOptionName]=b[thisOptionName]):!a.isUndefined(thisOptionDefaultValue)&&a.isUndefined(e[thisOptionName])&&(e[thisOptionName]=thisOptionDefaultValue)})}a.keys(f).length>0&&(a.isFunction(e.onOptionsChanged)?e.onOptionsChanged(f,g):a.isFunction(e._onOptionsChanged)&&e._onOptionsChanged(f,g))},b.getOptions=function(){var b=a.result(this,c);if(a.isUndefined(b))return[];var e=d(b),f=a.pluck(e,"name");return a.pick(this,f)}},ChildViewContainer=function(a,b){var c=function(a){this._views={},this._indexByModel={},this._indexByCustom={},this._updateLength(),b.each(a,this.add,this)};b.extend(c.prototype,{add:function(a,b){var c=a.cid;this._views[c]=a,a.model&&(this._indexByModel[a.model.cid]=c),b&&(this._indexByCustom[b]=c),this._updateLength()},findByModel:function(a){return this.findByModelCid(a.cid)},findByModelCid:function(a){var b=this._indexByModel[a];return this.findByCid(b)},findByCustom:function(a){var b=this._indexByCustom[a];return this.findByCid(b)},findByIndex:function(a){return b.values(this._views)[a]},findByCid:function(a){return this._views[a]},findIndexByCid:function(a){var c=-1,d=b.find(this._views,function(b){return c++,b.model.cid==a?b:void 0});return d?c:-1},remove:function(a){var c=a.cid;a.model&&delete this._indexByModel[a.model.cid],b.any(this._indexByCustom,function(a,b){return a===c?(delete this._indexByCustom[b],!0):void 0},this),delete this._views[c],this._updateLength()},call:function(a){this.apply(a,b.tail(arguments))},apply:function(a,c){b.each(this._views,function(d){b.isFunction(d[a])&&d[a].apply(d,c||[])})},_updateLength:function(){this.length=b.size(this._views)}});var d=["forEach","each","map","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","toArray","first","initial","rest","last","without","isEmpty","pluck"];return b.each(d,function(a){c.prototype[a]=function(){var c=b.values(this._views),d=[c].concat(b.toArray(arguments));return b[a].apply(b,d)}}),c}(b,a),b.CollectionView});
(function(e,t){"function"==typeof define&&define.amd?define(["underscore","backbone","jquery"],t):"undefined"!=typeof exports?module.exports=t(require("underscore"),require("backbone"),require("backbone").$):t(e._,e.Backbone,e.jQuery||e.Zepto||e.$)})(this,function(e,t,i){function s(t){var i=[];if(!e.isArray(t))throw Error("Option declarations must be an array.");return e.each(t,function(t){var s,n,o;if(n=!1,o=void 0,e.isString(t))s=t;else{if(!e.isObject(t))throw Error("Each element in the option declarations array must be either a string or an object.");s=e.first(e.keys(t)),o=e.clone(t[s])}"!"===s[s.length-1]&&(n=!0,s=s.slice(0,s.length-1)),i.push({name:s,required:n,defaultValue:o})}),i}var n=t.View,o="model",l=["collection","modelView","modelViewOptions","itemTemplate","selectableModelsFilter","sortableModelsFilter","visibleModelsFilter","itemTemplateFunction","detachedRendering","sortableOptions"],a={background:"transparent",border:"none","box-shadow":"none"};return t.CollectionView=t.View.extend({tagName:"ul",events:{"mousedown li, td":"_listItem_onMousedown","dblclick li, td":"_listItem_onDoubleClick",click:"_listBackground_onClick","click ul.collection-list, table.collection-list":"_listBackground_onClick",keydown:"_onKeydown"},spawnMessages:{focus:"focus"},passMessages:{"*":"."},initializationOptions:[{collection:new t.Collection},{modelView:null},{modelViewOptions:{}},{itemTemplate:null},{itemTemplateFunction:null},{selectable:!0},{clickToSelect:!0},{selectableModelsFilter:null},{visibleModelsFilter:null},{sortableModelsFilter:null},{selectMultiple:!1},{clickToToggle:!1},{processKeyEvents:!0},{sortable:!1},{sortableOptions:null},{reuseModelViews:!0},{detachedRendering:!1},{emptyListCaption:null}],initialize:function(e){t.ViewOptions.add(this,"initializationOptions"),this.setOptions(e),this._hasBeenRendered=!1,this._isBackboneCourierAvailable()&&t.Courier.add(this),this.$el.data("view",this),this.$el.addClass("collection-list"),this.selectable&&this.$el.addClass("selectable"),this.processKeyEvents&&this.$el.attr("tabindex",0),this.selectedItems=[],this._updateItemTemplate(),this.collection&&this._registerCollectionEvents(),this.viewManager=new ChildViewContainer},onOptionsChanged:function(t,i){var s=!1,n=this;e.each(e.keys(t),function(o){var a=t[o],r=i[o];switch(o){case"collection":a!==r&&(n.stopListening(r),n._registerCollectionEvents());break;case"selectMultiple":!a&&n.selectedItems.length>1&&n.setSelectedModel(e.first(n.selectedItems),{by:"cid"});break;case"selectable":!a&&n.selectedItems.length>0&&n.setSelectedModels([]);break;case"selectableModelsFilter":a&&e.isFunction(a)&&n._validateSelection();break;case"itemTemplate":n._updateItemTemplate();break;case"processKeyEvents":a&&n.$el.attr("tabindex",0);break;case"modelView":n.viewManager.each(function(e){n.viewManager.remove(e),e.remove()})}e.contains(l,o)&&(s=!0)}),this._hasBeenRendered&&s&&this.render()},setOption:function(e,t){var i={};i[e]=t,this.setOptions(i)},getSelectedModel:function(t){return e.first(this.getSelectedModels(t))},getSelectedModels:function(t){var s=this;t=e.extend({},{by:o},t);var n=t.by,l=[];switch(n){case"id":e.each(this.selectedItems,function(e){l.push(s.collection.get(e).id)});break;case"cid":l=l.concat(this.selectedItems);break;case"offset":var a=0,r=this._getVisibleItemEls();r.each(function(){var e=i(this);e.is(".selected")&&l.push(a),a++});break;case"model":e.each(this.selectedItems,function(e){l.push(s.collection.get(e))});break;case"view":e.each(this.selectedItems,function(e){l.push(s.viewManager.findByModel(s.collection.get(e)))})}return l},setSelectedModels:function(t,s){if(!e.isArray(t))throw"Invalid parameter value";if(this.selectable||!(t.length>0)){s=e.extend({},{silent:!1,by:o},s);var n=s.by,l=[];switch(n){case"cid":l=t;break;case"id":this.collection.each(function(i){e.contains(t,i.id)&&l.push(i.cid)});break;case"model":l=e.pluck(t,"cid");break;case"view":e.each(t,function(e){l.push(e.model.cid)});break;case"offset":var a=0,r=this._getVisibleItemEls();r.each(function(){var s=i(this);e.contains(t,a)&&l.push(s.attr("data-model-cid")),a++})}var d=this.getSelectedModels(),c=e.clone(this.selectedItems);this.selectedItems=this._convertStringsToInts(l),this._validateSelection();var h=this.getSelectedModels();this._containSameElements(c,this.selectedItems)||(this._addSelectedClassToSelectedItems(c),s.silent||(this.trigger("selectionChanged",h,d),this._isBackboneCourierAvailable()&&this.spawn("selectionChanged",{selectedModels:h,oldSelectedModels:d})),this.updateDependentControls())}},setSelectedModel:function(e,t){e||0===e?this.setSelectedModels([e],t):this.setSelectedModels([],t)},render:function(){var t=this;this._hasBeenRendered=!0,this.selectable&&this._saveSelection();var i;i=this._getContainerEl();var s=this.viewManager;this.viewManager=new ChildViewContainer,s.each(function(e){this.reuseModelViews&&this.collection.get(e.model.cid)?e.$el.detach():e.remove()},this),i.empty();var n;if(this.detachedRendering&&(n=document.createDocumentFragment()),this.collection.each(function(t){var o=s.findByModelCid(t.cid);(!this.reuseModelViews||e.isUndefined(o))&&(o=this._createNewModelView(t,this._getModelViewOptions(t))),this._insertAndRenderModelView(o,n||i)},this),this.detachedRendering&&i.append(n),this.sortable){var o=e.extend({axis:"y",distance:10,forcePlaceholderSize:!0,start:e.bind(this._sortStart,this),change:e.bind(this._sortChange,this),stop:e.bind(this._sortStop,this),receive:e.bind(this._receive,this),over:e.bind(this._over,this)},e.result(this,"sortableOptions"));t._isRenderedAsTable()?o.items="> tbody > tr:not(.not-sortable)":t._isRenderedAsList()&&(o.items="> li:not(.not-sortable)"),this.$el=this.$el.sortable(o)}this._showEmptyListCaptionIfAppropriate(),this.trigger("render"),this._isBackboneCourierAvailable()&&this.spawn("render"),this.selectable&&(this._restoreSelection(),this.updateDependentControls()),e.isFunction(this.onAfterRender)&&this.onAfterRender()},_showEmptyListCaptionIfAppropriate:function(){if(this.emptyListCaption){var t=this._getVisibleItemEls();if(0===t.length){var s;s=e.isFunction(this.emptyListCaption)?this.emptyListCaption():this.emptyListCaption;var n=i("<var class='empty-list-caption'>"+s+"</var>");$emptyListCaptionEl=this._isRenderedAsList()?n.wrapAll("<li class='not-sortable'></li>").parent().css(a):n.wrapAll("<tr class='not-sortable'><td></td></tr>").parent().parent().css(a),this._getContainerEl().append($emptyListCaptionEl)}}},_removeEmptyListCaption:function(){this._isRenderedAsList()?this._getContainerEl().find("> li > var.empty-list-caption").parent().remove():this._getContainerEl().find("> tr > td > var.empty-list-caption").parent().parent().remove()},_insertAndRenderModelView:function(t,i,s){var n=this._wrapModelView(t);11===i.nodeType?i.appendChild(n.get(0)):!e.isUndefined(s)&&s>=0&&i.children().length-1>s?i.children().eq(s).before(n):i.append(n);var o=t.render();o===!1&&(n.hide(),n.addClass("not-visible"));var l=!1;e.isFunction(this.visibleModelsFilter)&&(l=!this.visibleModelsFilter(t.model),l&&(1===n.children().length?n.hide():t.$el.hide(),n.addClass("not-visible"))),!l&&this.emptyListCaption&&this._removeEmptyListCaption(),this.viewManager.add(t)},updateDependentControls:function(){this.trigger("updateDependentControls",this.getSelectedModels()),this._isBackboneCourierAvailable()&&this.spawn("updateDependentControls",{selectedModels:this.getSelectedModels()})},remove:function(){this.viewManager.each(function(e){e.remove()}),t.View.prototype.remove.apply(this,arguments)},_removeModelView:function(e){var t=this.viewManager,i=t.findByModelCid(e.cid);this.selectable&&this._saveSelection(),t.remove(i),i.remove(),this._getContainerEl().children("[data-model-cid="+e.cid+"]").remove(),this.selectable&&this._restoreSelection(),this._showEmptyListCaptionIfAppropriate()},_validateSelectionAndRender:function(){this._validateSelection(),this.render()},_registerCollectionEvents:function(){this.listenTo(this.collection,"add",function(e){if(this._hasBeenRendered){var t=this._createNewModelView(e,this._getModelViewOptions(e));this._insertAndRenderModelView(t,this._getContainerEl(),this.collection.indexOf(e))}this._isBackboneCourierAvailable()&&this.spawn("add")}),this.listenTo(this.collection,"remove",function(e){this._hasBeenRendered&&this._removeModelView(e),this._isBackboneCourierAvailable()&&this.spawn("remove")}),this.listenTo(this.collection,"reset",function(){this._hasBeenRendered&&this.render(),this._isBackboneCourierAvailable()&&this.spawn("reset")}),this.listenTo(this.collection,"sort",function(e,t){this._hasBeenRendered&&t.add!==!0&&this.render(),this._isBackboneCourierAvailable()&&this.spawn("sort")})},_getContainerEl:function(){if(this._isRenderedAsTable()){var e=this.$el.find("> tbody");if(e.length>0)return e}return this.$el},_getClickedItemId:function(e){var t=null,s=i(e.currentTarget);if(s.closest(".collection-list").get(0)===this.$el.get(0)){var n=s.closest("[data-model-cid]");return n.length>0&&(t=n.attr("data-model-cid"),i.isNumeric(t)&&(t=parseInt(t,10))),t}},_updateItemTemplate:function(){var t;if(this.itemTemplate){if(0===i(this.itemTemplate).length)throw"Could not find item template from selector: "+this.itemTemplate;t=i(this.itemTemplate).html()}else t=this.$(".item-template").html();t&&(this.itemTemplateFunction=e.template(t))},_validateSelection:function(){var t=e.pluck(this.collection.models,"cid");this.selectedItems=e.intersection(t,this.selectedItems),e.isFunction(this.selectableModelsFilter)&&(this.selectedItems=e.filter(this.selectedItems,function(e){return this.selectableModelsFilter.call(this,this.collection.get(e))},this))},_saveSelection:function(){if(!this.selectable)throw"Attempt to save selection on non-selectable list";this.savedSelection={items:e.clone(this.selectedItems),offset:this.getSelectedModel({by:"offset"})}},_restoreSelection:function(){if(!this.savedSelection)throw"Attempt to restore selection but no selection has been saved!";this.setSelectedModels([],{silent:!0}),this.savedSelection.items.length>0&&(this.setSelectedModels(this.savedSelection.items,{by:"cid",silent:!0}),0===this.selectedItems.length&&this.setSelectedModel(this.savedSelection.offset,{by:"offset"}),this.selectedItems.length!==this.savedSelection.items.length&&(this.trigger("selectionChanged",this.getSelectedModels(),[]),this._isBackboneCourierAvailable()&&this.spawn("selectionChanged",{selectedModels:this.getSelectedModels(),oldSelectedModels:[]}))),delete this.savedSelection},_addSelectedClassToSelectedItems:function(t){e.isUndefined(t)&&(t=[]);var i=t;i=e.without(i,this.selectedItems),e.each(i,function(e){this._getContainerEl().find("[data-model-cid="+e+"]").removeClass("selected")},this);var s=this.selectedItems;s=e.without(s,t),e.each(s,function(e){this._getContainerEl().find("[data-model-cid="+e+"]").addClass("selected")},this)},_reorderCollectionBasedOnHTML:function(){var e=this;this._getContainerEl().children().each(function(){var t=i(this).attr("data-model-cid");if(t){var s=e.collection.get(t);s&&(e.collection.remove(s,{silent:!0}),e.collection.add(s,{silent:!0,sort:!e.collection.comparator}))}}),this.collection.trigger("reorder"),this._isBackboneCourierAvailable()&&this.spawn("reorder"),this.collection.comparator&&this.collection.sort()},_getModelViewConstructor:function(){return this.modelView||n},_getModelViewOptions:function(t){return e.extend({model:t},this.modelViewOptions)},_createNewModelView:function(t,i){var s=this._getModelViewConstructor(t);if(e.isUndefined(s))throw"Could not find modelView constructor for model";var n=new s(i);return n.collectionListView=this,n},_wrapModelView:function(t){var i,s=this;return this._isRenderedAsTable()?i=t.$el.attr("data-model-cid",t.model.cid):this._isRenderedAsList()&&(i="li"===t.$el.prop("tagName").toLowerCase()?t.$el.attr("data-model-cid",t.model.cid):t.$el.wrapAll("<li data-model-cid='"+t.model.cid+"'></li>").parent()),e.isFunction(this.sortableModelsFilter)&&(this.sortableModelsFilter.call(s,t.model)||i.addClass("not-sortable")),e.isFunction(this.selectableModelsFilter)&&(this.selectableModelsFilter.call(s,t.model)||i.addClass("not-selectable")),i},_convertStringsToInts:function(t){return e.map(t,function(t){if(!e.isString(t))return t;var i=parseInt(t,10);return i==t?i:t})},_containSameElements:function(t,i){if(t.length!=i.length)return!1;var s=e.intersection(t,i).length;return s==t.length},_isRenderedAsTable:function(){return"table"===this.$el.prop("tagName").toLowerCase()},_isRenderedAsList:function(){return!this._isRenderedAsTable()},_getVisibleItemEls:function(){var e=[];return e=this._getContainerEl().find("> [data-model-cid]:not(.not-visible)")},_charCodes:{upArrow:38,downArrow:40},_isBackboneCourierAvailable:function(){return!e.isUndefined(t.Courier)},_sortStart:function(e,t){var i=this.collection.get(t.item.attr("data-model-cid"));this.trigger("sortStart",i),this._isBackboneCourierAvailable()&&this.spawn("sortStart",{modelBeingSorted:i})},_sortChange:function(e,t){var i=this.collection.get(t.item.attr("data-model-cid"));this.trigger("sortChange",i),this._isBackboneCourierAvailable()&&this.spawn("sortChange",{modelBeingSorted:i})},_sortStop:function(e,t){var i=this.collection.get(t.item.attr("data-model-cid")),s=this._getContainerEl(),n=s.children().index(t.item);-1==n&&i&&this.collection.remove(i),i&&(this._reorderCollectionBasedOnHTML(),this.updateDependentControls(),this.trigger("sortStop",i,n),this._isBackboneCourierAvailable()&&this.spawn("sortStop",{modelBeingSorted:i,newIndex:n}))},_receive:function(e,t){var i=t.sender,s=i.data("view");if(s&&s.collection){var n=this._getContainerEl().children().index(t.item),o=s.collection.get(t.item.attr("data-model-cid"));s.collection.remove(o),this.collection.add(o,{at:n}),o.collection=this.collection,this.setSelectedModel(o)}},_over:function(){this._getContainerEl().find("> var.empty-list-caption").hide()},_onKeydown:function(e){if(!this.processKeyEvents)return!0;var t=!1;if(1==this.getSelectedModels({by:"offset"}).length){var i=this.getSelectedModel({by:"offset"});e.which===this._charCodes.upArrow&&0!==i?(this.setSelectedModel(i-1,{by:"offset"}),t=!0):e.which===this._charCodes.downArrow&&i!==this.collection.length-1&&(this.setSelectedModel(i+1,{by:"offset"}),t=!0)}return!t},_listItem_onMousedown:function(t){if(this.selectable&&this.clickToSelect){var i=this._getClickedItemId(t);if(i){if(e.isFunction(this.selectableModelsFilter)&&!this.selectableModelsFilter.call(this,this.collection.get(i)))return;if(this.selectMultiple&&t.shiftKey){var s=-1;this.selectedItems.length>0&&this.collection.find(function(t){return s++,e.contains(this.selectedItems,t.cid)},this);var n=-1;this.collection.find(function(e){return n++,e.cid==i},this);for(var o=-1==s?n:s,l=Math.min(n,o),a=Math.max(n,o),r=[],d=l;a>=d;d++)r.push(this.collection.at(d).cid);if(this.setSelectedModels(r,{by:"cid"}),document.selection&&document.selection.empty)document.selection.empty();else if(window.getSelection){var c=window.getSelection();c&&c.removeAllRanges&&c.removeAllRanges()}}else this.selectMultiple&&(this.clickToToggle||t.metaKey)?e.contains(this.selectedItems,i)?this.setSelectedModels(e.without(this.selectedItems,i),{by:"cid"}):this.setSelectedModels(e.union(this.selectedItems,i),{by:"cid"}):this.setSelectedModels([i],{by:"cid"})}else this.setSelectedModels([])}},_listItem_onDoubleClick:function(e){var t=this._getClickedItemId(e);if(t){var i=this.collection.get(t);this.trigger("doubleClick",i),this._isBackboneCourierAvailable()&&this.spawn("doubleClick",{clickedModel:i})}},_listBackground_onClick:function(e){this.selectable&&i(e.target).is(".collection-list")&&this.setSelectedModels([])}},{setDefaultModelViewConstructor:function(e){n=e}}),t.ViewOptions={},t.ViewOptions.add=function(t,i){e.isUndefined(i)&&(i="options"),t.setOptions=function(t){var n=this,o={},l={},a=e.result(this,i);if(!e.isUndefined(a)){var r=s(a);e.each(r,function(i){if(thisOptionName=i.name,thisOptionRequired=i.required,thisOptionDefaultValue=i.defaultValue,thisOptionRequired&&(!t||!e.contains(e.keys(t),thisOptionName)&&e.isUndefined(n[thisOptionName])||e.isUndefined(t[thisOptionName])))throw Error('Required option "'+thisOptionName+'" was not supplied.');t&&thisOptionName in t?(e.isUndefined(n[thisOptionName])||(l[thisOptionName]=n[thisOptionName],o[thisOptionName]=t[thisOptionName]),n[thisOptionName]=t[thisOptionName]):!e.isUndefined(thisOptionDefaultValue)&&e.isUndefined(n[thisOptionName])&&(n[thisOptionName]=thisOptionDefaultValue)})}e.keys(o).length>0&&(e.isFunction(n.onOptionsChanged)?n.onOptionsChanged(o,l):e.isFunction(n._onOptionsChanged)&&n._onOptionsChanged(o,l))},t.getOptions=function(){var t=e.result(this,i);if(e.isUndefined(t))return[];var n=s(t),o=e.pluck(n,"name");return e.pick(this,o)}},ChildViewContainer=function(e,t){var i=function(e){this._views={},this._indexByModel={},this._indexByCustom={},this._updateLength(),t.each(e,this.add,this)};t.extend(i.prototype,{add:function(e,t){var i=e.cid;this._views[i]=e,e.model&&(this._indexByModel[e.model.cid]=i),t&&(this._indexByCustom[t]=i),this._updateLength()},findByModel:function(e){return this.findByModelCid(e.cid)},findByModelCid:function(e){var t=this._indexByModel[e];return this.findByCid(t)},findByCustom:function(e){var t=this._indexByCustom[e];return this.findByCid(t)},findByIndex:function(e){return t.values(this._views)[e]},findByCid:function(e){return this._views[e]},findIndexByCid:function(e){var i=-1,s=t.find(this._views,function(t){return i++,t.model.cid==e?t:void 0});return s?i:-1},remove:function(e){var i=e.cid;e.model&&delete this._indexByModel[e.model.cid],t.any(this._indexByCustom,function(e,t){return e===i?(delete this._indexByCustom[t],!0):void 0},this),delete this._views[i],this._updateLength()},call:function(e){this.apply(e,t.tail(arguments))},apply:function(e,i){t.each(this._views,function(s){t.isFunction(s[e])&&s[e].apply(s,i||[])})},_updateLength:function(){this.length=t.size(this._views)}});var s=["forEach","each","map","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","toArray","first","initial","rest","last","without","isEmpty","pluck"];return t.each(s,function(e){i.prototype[e]=function(){var i=t.values(this._views),s=[i].concat(t.toArray(arguments));return t[e].apply(t,s)}}),i}(t,e),t.CollectionView});
{
"name": "bb-collection-view",
"version": "0.11.2",
"version": "0.11.3",
"description": "Easily render backbone.js collections with support for automatic selection of models in response to clicks, reordering models via drag and drop, and more.",

@@ -5,0 +5,0 @@ "main": "dist/backbone.collectionView.js",

@@ -299,7 +299,7 @@ ( function( root, factory ) {

// we won't need the other ones later, so no need to detach them individually.
if( this.reuseModelViews && _this.collection.get( thisModelView.model.cid ) )
if( this.reuseModelViews && this.collection.get( thisModelView.model.cid ) )
thisModelView.$el.detach();
else
thisModelView.remove();
} );
}, this );

@@ -306,0 +306,0 @@ modelViewContainerEl.empty();

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc