%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/js/landing/collection/ |
Current File : /home/bitrix/www/bitrix/js/landing/collection/node_collection.js |
;(function() { "use strict"; BX.namespace("BX.Landing.Collection"); /** * Implements interface for works with nodes collection * * @extends {BX.Landing.Collection.BaseCollection} * @constructor */ BX.Landing.Collection.NodeCollection = function() { BX.Landing.Collection.BaseCollection.apply(this, arguments); }; BX.Landing.Collection.NodeCollection.prototype = { constructor: BX.Landing.Collection.NodeCollection, __proto__: BX.Landing.Collection.BaseCollection.prototype, /** * Gets node by node * @param {HTMLElement} node * @return {?BX.Landing.Block.Node} */ getByNode: function(node) { var result = null; this.some(function(item) { if (item.node === node) { result = item; return true; } }); return result; }, /** * Gets node by node * @param {string} selector * @return {?BX.Landing.Block.Node} */ getBySelector: function(selector) { var result = null; this.some(function(item) { if (item.selector === selector) { result = item; return true; } }); return result; }, /** * Adds node to collection * @param {BX.Landing.Block.Node} node */ add: function(node) { if (!!node && node instanceof BX.Landing.Block.Node && !this.contains(node)) { this.push(node); } }, /** * Gets nodes matching selector * @param selector * @return {Array|Array.<BX.Landing.Block.Node>} */ matches: function(selector) { var result = new BX.Landing.Collection.NodeCollection(); this.forEach(function(item) { try { if (item.node.matches(selector)) { result.push(item); } } catch(err) {} }); return result; }, /** * Gets nodes not matching selector * @param selector * @return {BX.Landing.Collection.NodeCollection.<BX.Landing.Block.Node>} */ notMatches: function(selector) { var result = new BX.Landing.Collection.NodeCollection(); this.forEach(function(item) { if (!item.node.matches(selector)) { result.push(item); } }); return result; }, /** * Gets visible elements * @return {BX.Landing.Collection.NodeCollection} */ getVisible: function() { var result = new BX.Landing.Collection.NodeCollection(); this.forEach(function(item) { if (!item.hidden) { result.push(item); } }); return result; } }; })();