|
|
|
// TODO: This file was created by bulk-decaffeinate.
|
|
|
|
// Sanity-check the conversion and remove this comment.
|
|
|
|
/*
|
|
|
|
* decaffeinate suggestions:
|
|
|
|
* DS002: Fix invalid constructor
|
|
|
|
* DS102: Remove unnecessary code created because of implicit returns
|
|
|
|
* DS103: Rewrite code to no longer use __guard__, or convert again using --optional-chaining
|
|
|
|
* DS206: Consider reworking classes to avoid initClass
|
|
|
|
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/main/docs/suggestions.md
|
|
|
|
*/
|
|
|
|
const Cls = (app.views.ListSelect = class ListSelect extends app.View {
|
|
|
|
static initClass() {
|
|
|
|
this.activeClass = "active";
|
|
|
|
|
|
|
|
this.events = { click: "onClick" };
|
|
|
|
}
|
|
|
|
|
|
|
|
constructor(el) {
|
|
|
|
this.onClick = this.onClick.bind(this);
|
|
|
|
this.el = el;
|
|
|
|
super(...arguments);
|
|
|
|
}
|
|
|
|
|
|
|
|
deactivate() {
|
|
|
|
if (super.deactivate(...arguments)) {
|
|
|
|
this.deselect();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
select(el) {
|
|
|
|
this.deselect();
|
|
|
|
if (el) {
|
|
|
|
el.classList.add(this.constructor.activeClass);
|
|
|
|
$.trigger(el, "select");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
deselect() {
|
|
|
|
let selection;
|
|
|
|
if ((selection = this.getSelection())) {
|
|
|
|
selection.classList.remove(this.constructor.activeClass);
|
|
|
|
$.trigger(selection, "deselect");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
selectByHref(href) {
|
|
|
|
if (
|
|
|
|
__guard__(this.getSelection(), (x) => x.getAttribute("href")) !== href
|
|
|
|
) {
|
|
|
|
this.select(this.find(`a[href='${href}']`));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
selectCurrent() {
|
|
|
|
this.selectByHref(location.pathname + location.hash);
|
|
|
|
}
|
|
|
|
|
|
|
|
getSelection() {
|
|
|
|
return this.findByClass(this.constructor.activeClass);
|
|
|
|
}
|
|
|
|
|
|
|
|
onClick(event) {
|
|
|
|
if (event.which !== 1 || event.metaKey || event.ctrlKey) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
const target = $.eventTarget(event);
|
|
|
|
if (target.tagName === "A") {
|
|
|
|
this.select(target);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
Cls.initClass();
|
|
|
|
|
|
|
|
function __guard__(value, transform) {
|
|
|
|
return typeof value !== "undefined" && value !== null
|
|
|
|
? transform(value)
|
|
|
|
: undefined;
|
|
|
|
}
|