207 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			207 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | |
| <html lang="en">
 | |
|   <head>
 | |
|     <meta charset="utf-8" />
 | |
|     <title>JSDoc: Source: create-element.js</title>
 | |
| 
 | |
|     <script src="scripts/prettify/prettify.js"></script>
 | |
|     <script src="scripts/prettify/lang-css.js"></script>
 | |
|     <!--[if lt IE 9]>
 | |
|       <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
 | |
|     <![endif]-->
 | |
|     <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css" />
 | |
|     <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css" />
 | |
|   </head>
 | |
| 
 | |
|   <body>
 | |
|     <div id="main">
 | |
|       <h1 class="page-title">Source: create-element.js</h1>
 | |
| 
 | |
|       <section>
 | |
|         <article>
 | |
|           <pre
 | |
|             class="prettyprint source linenums"
 | |
|           ><code>import { customStylesFormat, nativOptionMultiple } from './utils';
 | |
|             /**
 | |
|              * @module createBreadcrumb
 | |
|              */
 | |
|             
 | |
|             /**
 | |
|              * Метод который создает и отвечает за поведение chips
 | |
|              * @param {object} data объект в котором содержатся настройки и элементы селекта
 | |
|              * @param {string} title имя выбранного элемента для отрисовки chips
 | |
|              * @param {number} index индекс выбранного элемента для отрисовки chips
 | |
|              * @param {string} id уникальное id выбранного элемента
 | |
|              * @returns {HTMLElement} возвращает сформированный HTMLElement chips item
 | |
|              */
 | |
|             export function createBreadcrumb(data, title, index, id) {
 | |
|               const { element, option, indexes, selectedItems } = data;
 | |
|               const { placeholder, styles } = option;
 | |
|             
 | |
|               const selected = element.querySelector('.selected');
 | |
|               const nativOption = element.querySelectorAll('.nativSelect__nativOption');
 | |
|             
 | |
|               const liChip = document.createElement('li');
 | |
|               const textNode = document.createTextNode(title);
 | |
|               const svgIcon = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
 | |
|               const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');
 | |
|               const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');
 | |
|             
 | |
|               svgIcon.setAttribute('viewBox', '0 0 10 10');
 | |
|               path1.setAttribute('d', 'M3,7 L7,3');
 | |
|               path2.setAttribute('d', 'M3,3 L7,7');
 | |
|               liChip.setAttribute('id', `tag-${index}-${id}`);
 | |
|             
 | |
|               svgIcon.classList.add('svg-icon');
 | |
|             
 | |
|               svgIcon.appendChild(path1);
 | |
|               svgIcon.appendChild(path2);
 | |
|               liChip.appendChild(textNode);
 | |
|               liChip.appendChild(svgIcon);
 | |
|             
 | |
|               if (styles) {
 | |
|                 const { chips } = styles;
 | |
|                 customStylesFormat(chips, liChip);
 | |
|               }
 | |
|             
 | |
|               svgIcon.addEventListener('click', (event) => {
 | |
|                 event.preventDefault();
 | |
|                 event.stopPropagation();
 | |
|                 nativOptionMultiple(nativOption, title, false);
 | |
|             
 | |
|                 const deleteIcon = indexes.indexOf(index);
 | |
|                 let checkBox = '';
 | |
|             
 | |
|                 indexes.splice(deleteIcon, 1);
 | |
|                 selectedItems.splice(deleteIcon, 1);
 | |
|             
 | |
|                 if (id) {
 | |
|                   checkBox = document.getElementById(`chbox-${id}`);
 | |
|                 } else {
 | |
|                   checkBox = document.getElementById(`chbox-${index}`);
 | |
|                 }
 | |
|             
 | |
|                 checkBox.checked = false;
 | |
|                 checkBox.parentElement.classList.remove('active');
 | |
|             
 | |
|                 if (!selectedItems.length) {
 | |
|                   selected.innerText = placeholder;
 | |
|                 }
 | |
|             
 | |
|                 liChip.parentElement.removeChild(liChip);
 | |
|               });
 | |
|             
 | |
|               return liChip;
 | |
|             }
 | |
|             
 | |
|             /**
 | |
|              * Метод который создает нативный селект
 | |
|              * @returns {HTMLSelectElement} Возвращает созданный нативный селект
 | |
|              */
 | |
|             export function createNativeSelect() {
 | |
|               const nativSelect = document.createElement('select');
 | |
|             
 | |
|               nativSelect.setAttribute('name', 'dataSelect');
 | |
|               nativSelect.classList.add('nativSelect');
 | |
|               return nativSelect;
 | |
|             }
 | |
|             
 | |
|             /**
 | |
|              * Метод который создает Options для нативного селекта
 | |
|              * @returns {HTMLOptionElement} Возвращает созданные Options нативного селекта
 | |
|              */
 | |
|             export function createNativSelectOption() {
 | |
|               const nativOption = document.createElement('option');
 | |
|             
 | |
|               nativOption.classList.add('nativSelect__nativOption');
 | |
|               return nativOption;
 | |
|             }
 | |
|             
 | |
|             /**
 | |
|              * Метод который создает поиск элементов в селекте
 | |
|              * @param {string} random уникальное значение для input элемента.
 | |
|              * @param {string} lenguage текст на определенном языке переданный из файла language.js
 | |
|              * @returns {HTMLInputElement} Возвращает сформированный input елемент.
 | |
|              */
 | |
|             export function createInputSearch(random, lenguage) {
 | |
|               const intputSearch = document.createElement('input');
 | |
|             
 | |
|               intputSearch.type = 'text';
 | |
|               intputSearch.classList.add('inputSearch');
 | |
|               intputSearch.setAttribute('id', `searchSelect-${random}`);
 | |
|             
 | |
|               if (lenguage) {
 | |
|                 intputSearch.setAttribute('placeholder', `${lenguage}`);
 | |
|               } else {
 | |
|                 intputSearch.setAttribute('placeholder', 'Search...');
 | |
|               }
 | |
|             
 | |
|               intputSearch.addEventListener('click', (e) => {
 | |
|                 e.preventDefault();
 | |
|               });
 | |
|             
 | |
|               return intputSearch;
 | |
|             }
 | |
| </code></pre>
 | |
|         </article>
 | |
|       </section>
 | |
|     </div>
 | |
| 
 | |
|     <nav>
 | |
|       <h2><a href="index.html">Home</a></h2>
 | |
|       <h3>Classes</h3>
 | |
|       <ul>
 | |
|         <li><a href="DropDown.html">DropDown</a></li>
 | |
|         <li>
 | |
|           <a
 | |
|             href="%25D0%259A%25D0%25BE%25D0%25BD%25D1%2581%25D1%2582%25D1%2580%25D1%2583%25D0%25BA%25D1%2582%25D0%25BE%25D1%2580%2520%25D0%25BA%25D0%25BB%25D0%25B0%25D1%2581%25D1%2581%25D0%25B0%2520DropDown.html"
 | |
|             >Конструктор класса DropDown</a
 | |
|           >
 | |
|         </li>
 | |
|       </ul>
 | |
|       <h3>Modules</h3>
 | |
|       <ul>
 | |
|         <li><a href="module-Utils.html">Utils</a></li>
 | |
|         <li><a href="module-createElementChips.html">createElementChips</a></li>
 | |
|       </ul>
 | |
|       <h3>Private methods</h3>
 | |
|       <ul>
 | |
|         <li><a href="global.html#addOptionsBehaviour">#addOptionsBehaviour</a></li>
 | |
|         <li><a href="global.html#close">#close</a></li>
 | |
|         <li><a href="global.html#checkTheme">#checkTheme</a></li>
 | |
|         <li><a href="global.html#closeSelectClick">#closeSelectClick</a></li>
 | |
|         <li><a href="global.html#init">#init</a></li>
 | |
|         <li><a href="global.html#initEvent">#initEvent</a></li>
 | |
|         <li><a href="global.html#initSelected">#initSelected</a></li>
 | |
|         <li><a href="global.html#open">#open</a></li>
 | |
|         <li><a href="global.html#render">#render</a></li>
 | |
|         <li><a href="global.html#renderUrl">#renderUrl</a></li>
 | |
|         <li><a href="global.html#searchMode">#searchMode</a></li>
 | |
|       </ul>
 | |
|       <h3>Public methods</h3>
 | |
|       <ul>
 | |
|         <li><a href="global.html#addLenguage">addLenguage</a></li>
 | |
|         <li><a href="global.html#addItem">addItem</a></li>
 | |
|         <li><a href="global.html#buttonControl">buttonControl</a></li>
 | |
|         <li><a href="global.html#deleteItem">deleteItem</a></li>
 | |
|         <li><a href="global.html#deleteItemAll">deleteItemAll</a></li>
 | |
|         <li><a href="global.html#disabled">disabled</a></li>
 | |
|         <li><a href="global.html#getElement">getElement</a></li>
 | |
|         <li><a href="global.html#selectIndex">selectIndex</a></li>
 | |
|       </ul>
 | |
|     </nav>
 | |
| 
 | |
|     <br class="clear" />
 | |
| 
 | |
|     <footer>
 | |
|       Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.11</a> on Wed
 | |
|       Oct 19 2022 20:13:59 GMT+0300 (Moscow Standard Time)
 | |
|     </footer>
 | |
| 
 | |
|     <script>
 | |
|       prettyPrint();
 | |
|     </script>
 | |
|     <script src="scripts/linenumber.js"></script>
 | |
|   </body>
 | |
| </html>
 |