From 79d0b3f9f81adbd90cdca4c3553f604cb724e5ea Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Wed, 24 Apr 2019 08:23:10 +0200 Subject: [PATCH] Add `findType` method in Component --- src/dom_components/model/Component.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/dom_components/model/Component.js b/src/dom_components/model/Component.js index a8cbb1910..b6d62730f 100644 --- a/src/dom_components/model/Component.js +++ b/src/dom_components/model/Component.js @@ -240,6 +240,27 @@ const Component = Backbone.Model.extend(Styleable).extend( return result; }, + /** + * Find all inner components by component id. + * The advantage of this method over `find` is that you can use it + * also before rendering the component + * @param {String} id Component id + * @returns {Array} + * @example + * const allImages = component.findType('image'); + * console.log(allImages[0]) // prints the first found component + */ + findType(id) { + const result = []; + const find = components => + components.forEach(item => { + item.is(id) && result.push(item); + find(item.components()); + }); + find(this.components()); + return result; + }, + /** * Find the closest parent component by query string. * **ATTENTION**: this method works only with already rendered component