Source: pages/lk.js

/** * @description Drop down заказа */
const openlOrderLk = {
    btn1: document.querySelectorAll(".info-lk__top"),
    btn2: document.querySelectorAll(".status-lk__top"),
    order: document.querySelectorAll(".info-lk__show"),
    status: document.querySelectorAll(".status-lk__show"),
    init: () => {
        for (let i = 0; i < openlOrderLk.btn1.length; i++) {
            openlOrderLk.btn1[i].addEventListener("click", function () {
                openlOrderLk.btn2[i].querySelector(".status-lk__arr").classList.toggle("active");
                openlOrderLk.order[i].classList.toggle("active");
                openlOrderLk.status[i].classList.toggle("active");
            });
            openlOrderLk.btn2[i].addEventListener("click", function () {
                openlOrderLk.btn2[i].querySelector(".status-lk__arr").classList.toggle("active");
                openlOrderLk.order[i].classList.toggle("active");
                openlOrderLk.status[i].classList.toggle("active");
            });
        }
    },
};

/** * @description Копирование промокода */
const promocod = {
    btn: document.querySelectorAll(".promo-lk__btn .btn"),
    cod: document.querySelectorAll(".promo-lk__cod"),
    init: () => {
        if (promocod.btn) {
            for (let i = 0; i < promocod.btn.length; i++) {
                promocod.btn[i].addEventListener("click", function () {
                    window.navigator.clipboard.writeText(promocod.cod[i].textContent);
                });
            }
        }
    },
};

/** * @description Инициализация и уничтожение карты при нажатии на кнопку. */
function Mapinit() {
    $("#btn-map-lk").bind({
        click: function () {
            $("#modal-map").html("");
            $("#modal-bollon").removeClass("active");
            var myPlacemark;
            var myMapL = new ymaps.Map(
                "modal-map",
                {
                    center: [54.83, 37.11],
                    zoom: 5,
                    controls: ["zoomControl"],
                },
                {
                    searchControlProvider: "yandex#search",
                }
            );

            // Слушаем клик на карте.
            myMapL.events.add("click", function (e) {
                var coords = e.get("coords");

                // Если метка уже создана – просто передвигаем ее.
                if (myPlacemark) {
                    myPlacemark.geometry.setCoordinates(coords);
                }
                // Если нет – создаем.
                else {
                    myPlacemark = createPlacemark(coords);
                    myMapL.geoObjects.add(myPlacemark);
                    // Слушаем событие окончания перетаскивания на метке.
                    myPlacemark.events.add("dragend", function () {
                        getAddress(myPlacemark.geometry.getCoordinates());
                    });
                }
                getAddress(coords);
            });

            // Создание метки.
            function createPlacemark(coords) {
                return new ymaps.Placemark(
                    coords,
                    {},
                    {
                        draggable: true,
                        iconLayout: "default#imageWithContent",
                        iconImageHref: "../pic/map/map.svg",
                        iconImageSize: [30, 42],
                        iconImageOffset: [-15, -42],
                        iconContentOffset: [15, 15],
                    }
                );
            }

            // Определяем адрес по координатам (обратное геокодирование).
            function getAddress(coords) {
                myPlacemark.properties.set("iconCaption", "поиск...");
                ymaps.geocode(coords).then(function (res) {
                    $("#city-lk").val(res.geoObjects.get(0).properties.get("description"));
                    $("#street-lk").val(res.geoObjects.get(0).properties.get("name").split(",").splice(0, 1).join(","));
                    $("#kv-lk").val(res.geoObjects.get(0).properties.get("name").split(",").splice(1, 1).join(","));
                    $("#modal-bollon").addClass("active");
                    $(".modal-bollon__text").html(res.geoObjects.get(0).properties.get("text"));
                });
            }
        },
    });
}

document.addEventListener("DOMContentLoaded", () => {
    openlOrderLk.init();
    promocod.init();
    // Как только будет загружен API и готов DOM, выполняем инициализацию
    ymaps.ready(Mapinit);
});