Изменения от Главреда ГитЖС | Changes of GitJS Glavred

This commit is contained in:
Главред | Glavred
2020-10-06 16:18:51 +03:00
parent b95b5fe6a9
commit f17382d7e7

View File

@@ -1,4 +1,4 @@
ВыборныйСписок = function(родитель, настройки) ВыборныйСписок = function(элемент, настройки)
{ {
if (!настройки) if (!настройки)
{ {
@@ -10,98 +10,80 @@
</li> </li>
`, `,
}, },
"отклик": {},
}; };
} }
this.отобразить = () => this.задатьЗаголовок = (заголовок) =>
{ {
this.показываем = true; this.заголовок = заголовок;
элемент.style.display = "block"; this.__пересобрать();
this.преобразования.innerHTML = ` };
#${элемент.id}
this.задатьСписок = (список) =>
{ {
opacity: 0; this.список = список;
animation: ${элемент.id}ПлавноОтобразить 0.4s ease; this.__пересобрать();
animation-fill-mode: forwards; };
this.очиститьВыбор = () =>
{
for (var номер in this.список)
{
var id = `${элемент.id}-${номер}`;
$(`#${id}`).removeClass("uk-active");
} }
};
this.выбратьЭлемент = (номер) =>
{
this.очиститьВыбор();
$(`#${элемент.id}-${номер}`).addClass("uk-active");
};
this.__пересобрать = () =>
{
this._адатьЗаголовокИСписок();
this.__отслеживатьВыбор();
}
this._адатьЗаголовокИСписок = () =>
{
var содержимое = "";
for (var номер in this.список)
{
var название = this.список[номер];
var id = `${элемент.id}-${номер}`;
var пункт = настройки.макет.элемент
.replace(/%название%/g, название)
.replace(/%id%/g, id)
;
содержимое += пункт;
}
if (this.заголовок && this.заголовок.length)
{
содержимое = `
<li class="uk-nav-header">${this.заголовок}</li>
${содержимое}
`; `;
}
элемент.innerHTML = содержимое;
}; };
this.скрыть = () => this.__отслеживатьВыбор = () =>
{ {
this.показываем = false; for (var номер in this.список)
this.преобразования.innerHTML = `
#${элемент.id}
{ {
opacity: ${настройки.прозрачность}; var id = `${элемент.id}-${номер}`;
animation: ${элемент.id}ПлавноСкрыть 0.4s ease; const номерПункта = номер;
animation-fill-mode: forwards; $(`#${id}-ссылка`).click(function() {
if (настройки.отклик && настройки.отклик.выбор)
{
настройки.отклик.выбор(номерПункта);
}
});
} }
`;
}; };
this.__создатьКадры = () =>
{
this.кадры = document.createElement("style");
document.head.appendChild(this.кадры);
this.кадры.innerHTML = `
@keyframes ${элемент.id}ПлавноОтобразить
{
0%
{
opacity: 0;
}
100%
{
opacity: ${настройки.прозрачность};
}
}
@keyframes ${элемент.id}ПлавноСкрыть
{
0%
{
opacity: ${настройки.прозрачность};
}
100%
{
opacity: 0;
}
}
`;
};
this.__создатьПреобразования = () =>
{
this.преобразования = document.createElement("style");
document.head.appendChild(this.преобразования);
};
this.__отслеживатьЗавершениеАнимации = () =>
{
this.показываем = true;
var тут = this;
элемент.addEventListener(
"animationend",
function()
{
if (тут.показываем && настройки.отклик && настройки.отклик.отображение)
{
настройки.отклик.отображение();
}
else if (!тут.показываем)
{
элемент.style.display = "none";
if (настройки.отклик && настройки.отклик.скрытие)
{
настройки.отклик.скрытие();
}
}
}
);
};
// Конструктор.
this.__создатьКадры();
this.__создатьПреобразования();
this.__отслеживатьЗавершениеАнимации();
}; };