## SelectorManager Selectors in GrapesJS are used in CSS Composer inside Rules and in Components as classes. To illustrate this concept let's take a look at this code: ```css span > #send-btn.btn{ ... } ``` ```html ``` In this scenario we get: - span -> selector of type `tag` - send-btn -> selector of type `id` - btn -> selector of type `class` So, for example, being `btn` the same class entity it'll be easier to refactor and track things. You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object][1] ```js const editor = grapesjs.init({ selectorManager: { // options } }) ``` Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance ```js const selectorManager = editor.SelectorManager; ``` - [getConfig][2] - [add][3] - [addClass][4] - [get][5] - [getAll][6] - [setState][7] - [getState][8] ## getConfig Get configuration object Returns **[Object][9]** ## setState Change the selector state ### Parameters - `value` **[String][10]** State value ### Examples ```javascript selectorManager.setState('hover'); ``` Returns **this** ## getState Get the current selector state Returns **[String][10]** ## add Add a new selector to collection if it's not already exists. Class type is a default one ### Parameters - `name` **([String][10] \| [Array][11])** Selector/s name - `opts` **[Object][9]** Selector options (optional, default `{}`) - `opts.label` **[String][10]** Label for the selector, if it's not provided the label will be the same as the name (optional, default `''`) - `opts.type` **[String][10]** Type of the selector. At the moment, only 'class' (1) is available (optional, default `1`) ### Examples ```javascript const selector = selectorManager.add('selectorName'); // Same as const selector = selectorManager.add('selectorName', { type: 1, label: 'selectorName' }); // Multiple selectors const selectors = selectorManager.add(['.class1', '.class2', '#id1']); ``` Returns **(Model | [Array][11])** ## addClass Add class selectors ### Parameters - `classes` **([Array][11] \| [string][10])** Array or string of classes ### Examples ```javascript sm.addClass('class1'); sm.addClass('class1 class2'); sm.addClass(['class1', 'class2']); // -> [SelectorObject, ...] ``` Returns **[Array][11]** Array of added selectors ## get Get the selector by its name ### Parameters - `name` **([String][10] \| [Array][11])** Selector name - `type` **[String][10]** Selector type ### Examples ```javascript const selector = selectorManager.get('selectorName'); // or get an array const selectors = selectorManager.get(['class1', 'class2']); ``` Returns **(Model | [Array][11])** ## getAll Get all selectors Returns **Collection** ## escapeName Return escaped selector name ### Parameters - `name` **[String][10]** Selector name to escape Returns **[String][10]** Escaped name [1]: https://github.com/artf/grapesjs/blob/master/src/selector_manager/config/config.js [2]: #getconfig [3]: #add [4]: #addclass [5]: #get [6]: #getall [7]: #setstate [8]: #getstate [9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object [10]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String [11]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array