Debuging and repare code

This commit is contained in:
Макс Овсяников 2023-01-17 20:21:43 +03:00
parent bf9dc01ad5
commit 8897e12464
10 changed files with 306 additions and 100 deletions

View File

@ -27,7 +27,7 @@
<nav> <nav>
<ul class="navlist"> <ul class="navlist">
<li><a href="">Home</a></li> <li><a href="">Home</a></li>
<li><a href="/documentation/index.html">Documentation</a></li> <!-- <li><a href="/documentation/index.html">Documentation</a></li> -->
</ul> </ul>
</nav> </nav>
</header> </header>
@ -356,5 +356,5 @@
</div> </div>
</body> </body>
<script type="module" src="index.js"></script> <script type="module" src="index.js"></script>
<script type="module" src="indexTs.ts"></script> <!-- <script type="module" src="indexTs.ts"></script> -->
</html> </html>

View File

@ -1,34 +1,34 @@
import DropDown from '../index'; import { CGSelect } from '../src/cg-selectTS';
import './example'; import './example';
// ------------------------------Обычный селект-------------------- // ------------------------------Обычный селект--------------------
// const dropdown = new DropDown({ const dropdown = new CGSelect({
// selector: '.cg-dropdown_one', selector: '.cg-dropdown_one',
// placeholder: 'Выберите авто', placeholder: 'Выберите авто',
// lable: 'EXAMPLE', lable: 'EXAMPLE',
// items: [ items: [
// 'BMW', 'BMW',
// { {
// id: '213sade', id: '213sade',
// title: 'Opel', title: 'Opel',
// value: 1, value: 1,
// }, },
// 'Mersedes', 'Mersedes',
// 'MAN', 'MAN',
// 'Ferari', 'Ferari',
// ], ],
// styles: { styles: {
// head: { head: {
// width: '830px', width: '830px',
// }, },
// list: { list: {
// width: '824px', width: '824px',
// }, },
// }, },
// }); });
// ------------------------------NativeSelect----------------------- // ------------------------------NativeSelect-----------------------
const dropdownNativeSelect = new DropDown({ const dropdownNativeSelect = new CGSelect({
selector: '.cg-dropdown_selectNative', selector: '.cg-dropdown_selectNative',
placeholder: 'Выберите авто', placeholder: 'Выберите авто',
nativeSelectMode: true, nativeSelectMode: true,
@ -43,7 +43,7 @@ const dropdownNativeSelect = new DropDown({
'MAN', 'MAN',
'Ferari', 'Ferari',
'Kamaz', 'Kamaz',
'Ural' 'Ural',
], ],
styles: { styles: {
head: { head: {
@ -56,7 +56,7 @@ const dropdownNativeSelect = new DropDown({
}); });
// ------------------------------listDisplayMode-------------------- // ------------------------------listDisplayMode--------------------
const dropdownlistDisplayMode = new DropDown({ const dropdownlistDisplayMode = new CGSelect({
selector: '.cg-dropdown_listDisplayMode', selector: '.cg-dropdown_listDisplayMode',
placeholder: 'Выберите авто', placeholder: 'Выберите авто',
listDisplayMode: true, listDisplayMode: true,
@ -81,26 +81,8 @@ const dropdownlistDisplayMode = new DropDown({
}, },
}); });
// ------------------------------URL--------------------
const dropdown3 = new DropDown({
selector: '.cg-dropdown_three',
placeholder: 'URL',
url: 'https://jsonplaceholder.typicode.com/users',
searchMode: true,
darkTheme: false,
language: 'ru',
styles: {
head: {
width: '830px',
},
list: {
width: '824px',
},
},
});
// --------------------------------Категории-------------------------- // --------------------------------Категории--------------------------
const dropdown4 = new DropDown({ const dropdown4 = new CGSelect({
selector: '.cg-dropdown_categories', selector: '.cg-dropdown_categories',
placeholder: 'Выберите регион', placeholder: 'Выберите регион',
searchMode: true, searchMode: true,
@ -145,7 +127,7 @@ const dropdown4 = new DropDown({
}); });
//----------------управление с помощью кнопок---------------------------------- //----------------управление с помощью кнопок----------------------------------
const dropdownBtn = new DropDown({ const dropdownBtn = new CGSelect({
selector: '.cg-dropdown_usedBtn', selector: '.cg-dropdown_usedBtn',
placeholder: 'Выберите авто', placeholder: 'Выберите авто',
searchMode: true, searchMode: true,
@ -192,7 +174,7 @@ dropdownBtn.buttonControl(buttonOpen, 'open');
dropdownBtn.buttonControl(buttonClose, 'close'); dropdownBtn.buttonControl(buttonClose, 'close');
//-------------------------Функция Disabled---------------------------------- //-------------------------Функция Disabled----------------------------------
const dropdownDisabled = new DropDown({ const dropdownDisabled = new CGSelect({
selector: '.cg-dropdown_checkboxDisable', selector: '.cg-dropdown_checkboxDisable',
placeholder: 'Выберите авто', placeholder: 'Выберите авто',
searchMode: true, searchMode: true,
@ -230,3 +212,22 @@ chbox.addEventListener('click', () => {
dropdownDisabled.disabled(true); dropdownDisabled.disabled(true);
} }
}); });
// ------------------------------URL--------------------
const dropdown3 = new CGSelect({
selector: '.cg-dropdown_three',
placeholder: 'URL',
url: 'https://jsonplaceholder.typicode.com/todos',
searchMode: true,
darkTheme: false,
language: 'ru',
styles: {
head: {
width: '830px',
},
list: {
width: '824px',
},
},
multiselect: true,
});

View File

@ -1,36 +1,234 @@
import { CGSelect } from '../src/cg-selectTS'; // import { CGSelect } from '../src/cg-selectTS';
// import './example';
const dropdn = new CGSelect({ // // ------------------------------Обычный селект--------------------
selector: '.cg-dropdown_one', // const dropdn = new CGSelect({
placeholder: 'Выберите авто', // selector: '.cg-dropdown_one',
items: [ // placeholder: 'Выберите авто',
'BMW', // lable: 'EXAMPLE',
{ // items: [
id: '213sade', // 'BMW',
title: 'Opel', // {
value: 1, // id: '213sade',
}, // title: 'Opel',
'Mersedes', // value: 1,
'MAN', // },
'max', // 'Mersedes',
], // 'MAN',
styles: { // 'Ferari',
head: { // ],
width: '830px', // styles: {
}, // head: {
list: { // width: '830px',
width: '824px', // },
}, // list: {
placeholder: { // width: '824px',
maxWidth: '500px ', // },
}, // },
}, // });
// url
// listDisplayMode: true, // // ------------------------------NativeSelect-----------------------
// searchMode: true, // const dropdownNativeSelect = new CGSelect({
// nativeSelectMode: true // selector: '.cg-dropdown_selectNative',
// event: 'mouseenter', // placeholder: 'Выберите авто',
// buttonControl // nativeSelectMode: true,
multiselect: true, // items: [
multiselectTag: true, // 'BMW',
}); // {
// id: '213sade',
// title: 'Opel',
// value: 1,
// },
// 'Mersedes',
// 'MAN',
// 'Ferari',
// 'Kamaz',
// 'Ural',
// ],
// styles: {
// head: {
// width: '830px',
// },
// list: {
// width: '824px',
// },
// },
// });
// // console.log();
// // ------------------------------listDisplayMode--------------------
// const dropdownlistDisplayMode = new CGSelect({
// selector: '.cg-dropdown_listDisplayMode',
// placeholder: 'Выберите авто',
// listDisplayMode: true,
// items: [
// 'BMW',
// {
// id: '213sade',
// title: 'Opel',
// value: 1,
// },
// 'Mersedes',
// 'MAN',
// 'Ferari',
// ],
// styles: {
// head: {
// width: '830px',
// },
// list: {
// width: '824px',
// },
// },
// });
// // ------------------------------URL--------------------
// const dropdown3 = new CGSelect({
// selector: '.cg-dropdown_three',
// placeholder: 'URL',
// url: 'https://jsonplaceholder.typicode.com/users',
// searchMode: true,
// darkTheme: false,
// language: 'ru',
// styles: {
// head: {
// width: '830px',
// },
// list: {
// width: '824px',
// },
// },
// });
// // --------------------------------Категории--------------------------
// const dropdown4 = new CGSelect({
// selector: '.cg-dropdown_categories',
// placeholder: 'Выберите регион',
// searchMode: true,
// items: [
// {
// category: 'Russia',
// categoryItems: [
// {
// id: '28qwds',
// title: 'Москва',
// value: 0,
// },
// ,
// 'Ростов-на-дону',
// 'Саратов',
// 'Волгоград',
// 'Донецк',
// ],
// },
// {
// category: 'USA',
// categoryItems: ['Alabama', 'Texas', 'Colorado', 'Klirens', 'Los-Angeles'],
// },
// {
// category: 'France',
// categoryItems: ['Paris'],
// },
// ],
// styles: {
// head: {
// width: '830px',
// },
// list: {
// width: '824px',
// },
// placeholder: {
// maxWidth: '500px ',
// },
// },
// multiselect: true,
// multiselectTag: true,
// });
// //----------------управление с помощью кнопок----------------------------------
// const dropdownBtn = new CGSelect({
// selector: '.cg-dropdown_usedBtn',
// placeholder: 'Выберите авто',
// searchMode: true,
// items: [
// 'BMW',
// {
// id: '213sade',
// title: 'Opel',
// value: 1,
// },
// 'Mersedes',
// 'MAN',
// 'max',
// ],
// styles: {
// head: {
// width: '830px',
// color: 'black',
// backgroundColor: 'rgb(176 223 167)',
// },
// list: {
// width: '824px',
// color: 'black',
// backgroundColor: 'rgb(176 223 167)',
// },
// caret: {
// borderTop: '6px solid black',
// },
// search: {
// backgroundColor: '#d7ffff',
// borderRadius: '5px',
// borderBottom: 'none',
// width: '95%',
// color: 'black',
// },
// },
// multiselect: true,
// });
// const buttonOpen = document.querySelector('.button__open');
// const buttonClose = document.querySelector('.button__close');
// dropdownBtn.buttonControl(buttonOpen!, 'open');
// dropdownBtn.buttonControl(buttonClose!, 'close');
// //-------------------------Функция Disabled----------------------------------
// const dropdownDisabled = new CGSelect({
// selector: '.cg-dropdown_checkboxDisable',
// placeholder: 'Выберите авто',
// searchMode: true,
// items: [
// 'BMW',
// {
// id: '213sade',
// title: 'Opel',
// value: 1,
// },
// 'Mersedes',
// 'MAN',
// 'max',
// ],
// styles: {
// head: {
// width: '830px',
// },
// list: {
// width: '824px',
// },
// placeholder: {
// maxWidth: '500px ',
// },
// },
// multiselect: true,
// });
// dropdownDisabled.disabled(true);
// let chbox = document.getElementById('checkboxDisable') as HTMLInputElement;
// chbox!.addEventListener('click', () => {
// if (chbox!.checked == true) {
// dropdownDisabled.disabled(false);
// } else {
// dropdownDisabled.disabled(true);
// }
// });

View File

View File

@ -9,7 +9,7 @@
"homepage": "https://cg-select.itguild.info", "homepage": "https://cg-select.itguild.info",
"scripts": { "scripts": {
"start": "parcel example/index.html -p 4500 --open ", "start": "parcel example/index.html -p 4500 --open ",
"build": "parcel build ./src/cg-selectTS.ts --no-cache", "build": "parcel build example/index.html --no-cache",
"deploy": "gh-pages -d dist", "deploy": "gh-pages -d dist",
"predeploy": "npm run build" "predeploy": "npm run build"
}, },

View File

@ -230,10 +230,11 @@ export class CGSelect implements ICgSelect {
this.items = []; this.items = [];
if (!this.items && this.url) { if (this.url && !items) {
this.renderUrl(); this.renderUrl();
return; return;
} }
createSelected; createSelected;
items.forEach((dataItem: any, index: number) => { items.forEach((dataItem: any, index: number) => {
@ -373,12 +374,9 @@ export class CGSelect implements ICgSelect {
* @description Рендер елементов в селекте переданных с URL и их настойка * @description Рендер елементов в селекте переданных с URL и их настойка
*/ */
private async renderUrl() { private async renderUrl() {
if (this.items || !this.url) { const response = await fetch(this.url!);
return;
}
const response = await fetch(this.url);
const dataUrl = await response.json(); const dataUrl = await response.json();
console.log(dataUrl);
const nativeSelect = createNativeSelect(); const nativeSelect = createNativeSelect();
@ -554,7 +552,10 @@ export class CGSelect implements ICgSelect {
const select: HTMLElement | null | undefined = this.element?.querySelector('.selected'); const select: HTMLElement | null | undefined = this.element?.querySelector('.selected');
const nativeOption = this.element!.querySelectorAll('.nativeSelect__nativeOption'); const nativeOption = this.element!.querySelectorAll('.nativeSelect__nativeOption');
let selectedItemsClear: ISelectedItems; let selectedItemsClear: ISelectedItems = {
placeholder: this.placeholder!,
selected: this.selected!,
};
const ulMultipul = document.createElement('ul'); const ulMultipul = document.createElement('ul');

View File

@ -1,4 +1,4 @@
import { nativeOptionMultiple } from '../utils/utilsTs'; import { customStylesFormat, nativeOptionMultiple } from '../utils/utilsTs';
import { ICreateBreadCrumb } from './create-element.interface'; import { ICreateBreadCrumb } from './create-element.interface';
/** /**
@ -63,8 +63,8 @@ export function createBreadCrumb(
liChip.appendChild(svgIcon); liChip.appendChild(svgIcon);
if (styles) { if (styles) {
// const { chips } = styles; const { chips } = styles;
// customStylesFormat(chips, liChip); customStylesFormat(chips!, liChip);
} }
svgIcon.addEventListener('click', (event) => { svgIcon.addEventListener('click', (event) => {

View File

@ -48,6 +48,7 @@ export function getSelectText(
} else { } else {
select!.innerText = 'Select...'; select!.innerText = 'Select...';
} }
return select!; return select!;
} }
@ -116,7 +117,7 @@ export function clearSelect(select: HTMLElement, element: Element, dataSelectTex
svgIcon.appendChild(path1); svgIcon.appendChild(path1);
svgIcon.appendChild(path2); svgIcon.appendChild(path2);
if (multiselectTag) { if (multiselectTag && multiselectTag == true) {
return; return;
} }
@ -162,7 +163,7 @@ export function clearSelect(select: HTMLElement, element: Element, dataSelectTex
* @param {NodeList} element NodeList нативного селекта * @param {NodeList} element NodeList нативного селекта
* @param {any} item выбранный элемент в кастомном селекте * @param {any} item выбранный элемент в кастомном селекте
*/ */
export function nativeOptionOrdinary(element: NodeListOf<Element> | undefined, item: any) { export function nativeOptionOrdinary(element: NodeListOf<Element> | undefined, item: string) {
element!.forEach((option) => { element!.forEach((option) => {
option.removeAttribute('selected'); option.removeAttribute('selected');
if (option.textContent === item) { if (option.textContent === item) {

View File

@ -128,4 +128,9 @@ export interface IStyle {
* @type {object} * @type {object}
*/ */
search?: object; search?: object;
/**
* Кастомизация чипсов с выбранными элементами
* @type {object}
*/
chips?: object;
} }

View File

@ -1,5 +1,5 @@
{ {
"include": ["src/**/*", "index.ts"], // "include": ["src/**/*", "index.ts"],
"compilerOptions": { "compilerOptions": {
/* Projects */ /* Projects */
// "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */