mirror of https://github.com/freeCodeCamp/devdocs
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.8 KiB
67 lines
1.8 KiB
// 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;
|
|
} |