| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- app.views.ListSelect = class ListSelect extends app.View {
- static activeClass = "active";
- static events = { click: "onClick" };
- 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 (this.getSelection()?.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);
- }
- }
- };
|