fix закрытие input с выподающими списками

cosmopet--Memento-mori-dev
Kirill Pet 10 months ago
parent e6bccc904f
commit 928d5c1ffa
  1. 3
      assets/css/gp-style-core.css
  2. 63
      assets/js/gp-form.js
  3. 15
      notification-form-pet.html

@ -714,6 +714,9 @@ button{
background: var(--background-white);
transition: left .2s ease-out;
}
.form-input-two__input:checked + .form-input-two__oval{
left: calc(50% - 2px);
}
.form-input-two__button{
width: 50%;

@ -1,9 +1,9 @@
'use strict';
inputPhone('.form-input__phone', '.form-input-phone__icon', '.form-input-phone__code', '.form-input-phone__input', '.form-input-phone__list', '.form-input-phone-list__item', '.form-input-phone-list-item__icon', '.form-input-phone-list-item__code');
inputPhone('.form-input__phone', '.form-input-phone__icon', '.form-input-phone__code', '.form-input-phone__input', '.form-input-phone__list', 'form-input-phone-list__item', '.form-input-phone-list-item__icon', '.form-input-phone-list-item__code', 'form-input-phone-list__search');
function inputPhone(main, mainFlag, mainCode, input, list, selects, selectIcon, selectCode) {
function inputPhone(main, mainFlag, mainCode, input, list, selects, selectIcon, selectCode, searchInput) {
let inputs = document.querySelectorAll(main);
inputs.forEach(e => {
@ -11,13 +11,25 @@ function inputPhone(main, mainFlag, mainCode, input, list, selects, selectIcon,
thisMainCode = e.querySelector(mainCode),
thisInput = e.querySelector(input),
thisList = e.querySelector(list),
thisSelects = e.querySelectorAll(selects);
thisSelects = e.querySelectorAll(`.${selects}`),
thisSearchInput = e.querySelector(`.${searchInput}`);
thisInput.onblur = function (input) {
if (!(input.relatedTarget != null && (input.relatedTarget.classList.contains(searchInput) || input.relatedTarget.classList.contains(selects)))) {
thisList.classList.remove('active');
}
}
e.onclick = function (event) {
thisInput.focus();
if (!event.target.classList.contains(searchInput)) {
if (thisList.classList.contains('active')) {
thisList.classList.remove('active');
}
thisInput.focus();
thisList.classList.add('active');
}
}
thisSelects.forEach(e => {
let newIcon = e.querySelector(selectIcon),
@ -61,35 +73,19 @@ function checkPhone(input) {
})
}
inputTwo('.form-input__two', '.form-input-two__button', '.form-input-two__oval', '.form-input-two__input')
inputTwo('.form-input__two', '.form-input-two__input')
function inputTwo(inputTwo, button, oval, input) {
let inputTwos = document.querySelectorAll(inputTwo);
function inputTwo(main, inputTwo) {
let buttons = document.querySelectorAll(main);
inputTwos.forEach(e => {
let thisButtons = e.querySelectorAll(button),
thisOval = e.querySelector(oval),
thisInput = e.querySelector(input),
thisMain = e;
thisButtons.forEach(button => {
button.onclick = function (event) {
event.preventDefault();
buttons.forEach(button => {
let input = button.querySelector(inputTwo);
let newLeft = button.clientWidth;
let newValue = button.textContent;
if (button.classList.contains('alternative')) {
thisMain.classList.add('alternative');
thisInput.value = newValue;
thisOval.style.left = `${newLeft}px`;
}else{
thisMain.classList.remove('alternative');
thisInput.value = newValue;
thisOval.style.left = `2px`;
button.onclick = function () {
input.checked = (input.checked == false) ? true : false;
}
}
})
})
}
@ -134,6 +130,12 @@ function listInputRadio(main ,item, textClass, input, content, block) {
thisBlock.style.height = '192px';
}
thisInput.onblur = function(){
thisBlock.classList.remove('active');
thisBlock.style.height = '0px';
};
items.forEach(item => {
item.onclick = function (event) {
event.preventDefault();
@ -146,9 +148,6 @@ function listInputRadio(main ,item, textClass, input, content, block) {
}
item.classList.add('active');
thisBlock.classList.remove('active');
thisBlock.style.height = '0px';
}
})
})

@ -234,12 +234,11 @@
<div class="modal-form-content__line">
<label for="" class="label-name">Вид животного</label>
<div class="form-input__two">
<input type="radio" class="form-input-two__input">
<div class="form-input-two__oval"></div>
<button class="form-input-two__button">Кошка</button>
<button class="form-input-two__button alternative">Собака</button>
<input type="text" value="Кошка" class="form-input-two__input">
<button class="form-input-two__button ">Собака</button>
</div>
</div>
@ -262,12 +261,12 @@
<div class="modal-form-content__line">
<label for="" class="label-name">Пол вашего питомца</label>
<div class="form-input__two">
<input type="radio" class="form-input-two__input">
<div class="form-input-two__oval"></div>
<button class="form-input-two__button">Мальчик</button>
<button class="form-input-two__button alternative">Девочка</button>
<button class="form-input-two__button ">Девочка</button>
<input type="text" value="Кошка" class="form-input-two__input">
</div>
</div>
@ -378,12 +377,12 @@
<div class="modal-form-content__line">
<label for="" class="label-name">Возраст питомца</label>
<div class="form-input__two">
<input type="radio" class="form-input-two__input">
<div class="form-input-two__oval"></div>
<button class="form-input-two__button">Примерный</button>
<button class="form-input-two__button alternative">Точный</button>
<input type="text" value="Кошка" class="form-input-two__input">
<button class="form-input-two__button ">Точный</button>
</div>
</div>

Loading…
Cancel
Save