Files
povtorniy-repeating-ui/выборный-список|selection-list.js

91 lines
2.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

ВыборныйСписок = function(элемент, настройки)
{
// Конструктор.
this.отклик = {};
if (!настройки)
{
настройки = {
"макет": {
"элемент": `
<li id="%id%">
<a id="%id%-ссылка">%название%</a>
</li>
`,
},
};
}
this.задатьЗаголовок = (заголовок) =>
{
this.заголовок = заголовок;
this.__пересобрать();
};
this.задатьСписок = (список) =>
{
this.список = список;
this.__пересобрать();
};
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.__отслеживатьВыбор = () =>
{
var тут = this;
for (var номер in this.список)
{
var id = `${элемент.id}-${номер}`;
const номерПункта = номер;
$(`#${id}-ссылка`).click(function() {
if (тут.отклик && тут.отклик.выбор)
{
тут.отклик.выбор(номерПункта);
}
});
}
};
};