@nakedobjects/gemini
Version:
Single Page Application client for a Naked Objects application.
61 lines • 9.02 kB
JavaScript
import { Component, Input, ViewChildren } from '@angular/core';
import map from 'lodash-es/map';
import some from 'lodash-es/some';
import { ActionComponent } from '../action/action.component';
import { safeUnsubscribe } from '../helpers-components';
import * as i0 from "@angular/core";
import * as i1 from "@nakedobjects/services";
import * as i2 from "@angular/common";
import * as i3 from "../action/action.component";
export class MenuBarComponent {
urlManager;
constructor(urlManager) {
this.urlManager = urlManager;
}
actionComponents;
sub;
set menus(links) {
this.actions = map(links, link => ({
value: link.title,
doClick: () => {
const menuId = link.link.rel().parms[0].value;
this.urlManager.setMenu(menuId, link.paneId);
},
// eslint-disable-next-line @typescript-eslint/no-empty-function
doRightClick: () => { },
show: () => true,
disabled: () => null,
tempDisabled: () => false,
title: () => link.title,
accesskey: null,
presentationHint: '',
showDialog: () => false
}));
}
actions = [];
focusOnFirstMenu(menusList) {
if (menusList) {
// until first element returns true
some(menusList.toArray(), i => i.focus());
}
}
ngAfterViewInit() {
this.focusOnFirstMenu(this.actionComponents);
this.sub = this.actionComponents?.changes.subscribe((ql) => this.focusOnFirstMenu(ql));
}
ngOnDestroy() {
safeUnsubscribe(this.sub);
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: MenuBarComponent, deps: [{ token: i1.UrlManagerService }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: MenuBarComponent, selector: "nof-menu-bar", inputs: { menus: "menus" }, viewQueries: [{ propertyName: "actionComponents", predicate: ActionComponent, descendants: true }], ngImport: i0, template: "<nof-action *ngFor=\"let action of actions\" [action]=\"action\"></nof-action>\n", styles: [":host{display:block}nof-action{outline:none;margin-right:var(--space-5);display:block;float:left;margin-left:var(--space-1);margin-right:var(--space-4);margin-bottom:var(--space-3);font-size:var(--font-size-3)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.ActionComponent, selector: "nof-action", inputs: ["action"] }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: MenuBarComponent, decorators: [{
type: Component,
args: [{ selector: 'nof-menu-bar', template: "<nof-action *ngFor=\"let action of actions\" [action]=\"action\"></nof-action>\n", styles: [":host{display:block}nof-action{outline:none;margin-right:var(--space-5);display:block;float:left;margin-left:var(--space-1);margin-right:var(--space-4);margin-bottom:var(--space-3);font-size:var(--font-size-3)}\n"] }]
}], ctorParameters: () => [{ type: i1.UrlManagerService }], propDecorators: { actionComponents: [{
type: ViewChildren,
args: [ActionComponent]
}], menus: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZ2VtaW5pL3NyYy9tZW51LWJhci9tZW51LWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9nZW1pbmkvc3JjL21lbnUtYmFyL21lbnUtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLEtBQUssRUFBd0IsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3BHLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQztBQUNoQyxPQUFPLElBQUksTUFBTSxnQkFBZ0IsQ0FBQztBQUVsQyxPQUFPLEVBQUUsZUFBZSxFQUFpQixNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7QUFPeEQsTUFBTSxPQUFPLGdCQUFnQjtJQUVJO0lBQTdCLFlBQTZCLFVBQTZCO1FBQTdCLGVBQVUsR0FBVixVQUFVLENBQW1CO0lBQUksQ0FBQztJQUcvRCxnQkFBZ0IsQ0FBOEI7SUFFdEMsR0FBRyxDQUFpQjtJQUU1QixJQUNJLEtBQUssQ0FBQyxLQUFzQjtRQUU1QixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixPQUFPLEVBQUUsR0FBRyxFQUFFO2dCQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDL0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRCxDQUFDO1lBQ0QsZ0VBQWdFO1lBQ2hFLFlBQVksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO1lBQ3ZCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO1lBQ3BCLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLO1lBQ3pCLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSztZQUN2QixTQUFTLEVBQUUsSUFBSTtZQUNmLGdCQUFnQixFQUFFLEVBQUU7WUFDcEIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUs7U0FDMUIsQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTyxHQUFvQixFQUFFLENBQUM7SUFFOUIsZ0JBQWdCLENBQUMsU0FBc0M7UUFDbkQsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNaLG1DQUFtQztZQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUE4QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2SCxDQUFDO0lBRUQsV0FBVztRQUNQLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQzt1R0EvQ1EsZ0JBQWdCOzJGQUFoQixnQkFBZ0IscUhBSVgsZUFBZSxnRENsQmpDLGtGQUNBOzsyRkRhYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0ksY0FBYztzRkFTeEIsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMsZUFBZTtnQkFNekIsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXJsTWFuYWdlclNlcnZpY2UgfSBmcm9tICdAbmFrZWRvYmplY3RzL3NlcnZpY2VzJztcbmltcG9ydCB7IExpbmtWaWV3TW9kZWwgfSBmcm9tICdAbmFrZWRvYmplY3RzL3ZpZXctbW9kZWxzJztcbmltcG9ydCBtYXAgZnJvbSAnbG9kYXNoLWVzL21hcCc7XG5pbXBvcnQgc29tZSBmcm9tICdsb2Rhc2gtZXMvc29tZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25MaWtlIGFzIElTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFjdGlvbkNvbXBvbmVudCwgSUFjdGlvbkhvbGRlciB9IGZyb20gJy4uL2FjdGlvbi9hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IHNhZmVVbnN1YnNjcmliZSB9IGZyb20gJy4uL2hlbHBlcnMtY29tcG9uZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbm9mLW1lbnUtYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJ21lbnUtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnbWVudS1iYXIuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVCYXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB1cmxNYW5hZ2VyOiBVcmxNYW5hZ2VyU2VydmljZSkgeyB9XG5cbiAgICBAVmlld0NoaWxkcmVuKEFjdGlvbkNvbXBvbmVudClcbiAgICBhY3Rpb25Db21wb25lbnRzPzogUXVlcnlMaXN0PEFjdGlvbkNvbXBvbmVudD47XG5cbiAgICBwcml2YXRlIHN1Yj86IElTdWJzY3JpcHRpb247XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBtZW51cyhsaW5rczogTGlua1ZpZXdNb2RlbFtdKSB7XG5cbiAgICAgICAgdGhpcy5hY3Rpb25zID0gbWFwKGxpbmtzLFxuICAgICAgICAgICAgbGluayA9PiAoe1xuICAgICAgICAgICAgICAgIHZhbHVlOiBsaW5rLnRpdGxlLFxuICAgICAgICAgICAgICAgIGRvQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVudUlkID0gbGluay5saW5rLnJlbCgpIS5wYXJtc1swXS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cmxNYW5hZ2VyLnNldE1lbnUobWVudUlkISwgbGluay5wYW5lSWQpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgICAgICAgICAgICAgIGRvUmlnaHRDbGljazogKCkgPT4geyB9LFxuICAgICAgICAgICAgICAgIHNob3c6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICgpID0+IG51bGwsXG4gICAgICAgICAgICAgICAgdGVtcERpc2FibGVkOiAoKSA9PiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogKCkgPT4gbGluay50aXRsZSxcbiAgICAgICAgICAgICAgICBhY2Nlc3NrZXk6IG51bGwsXG4gICAgICAgICAgICAgICAgcHJlc2VudGF0aW9uSGludDogJycsXG4gICAgICAgICAgICAgICAgc2hvd0RpYWxvZzogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBhY3Rpb25zOiBJQWN0aW9uSG9sZGVyW10gPSBbXTtcblxuICAgIGZvY3VzT25GaXJzdE1lbnUobWVudXNMaXN0PzogUXVlcnlMaXN0PEFjdGlvbkNvbXBvbmVudD4pIHtcbiAgICAgICAgaWYgKG1lbnVzTGlzdCkge1xuICAgICAgICAgICAgLy8gdW50aWwgZmlyc3QgZWxlbWVudCByZXR1cm5zIHRydWVcbiAgICAgICAgICAgIHNvbWUobWVudXNMaXN0LnRvQXJyYXkoKSwgaSA9PiBpLmZvY3VzKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzT25GaXJzdE1lbnUodGhpcy5hY3Rpb25Db21wb25lbnRzKTtcbiAgICAgICAgdGhpcy5zdWIgPSB0aGlzLmFjdGlvbkNvbXBvbmVudHM/LmNoYW5nZXMuc3Vic2NyaWJlKChxbDogUXVlcnlMaXN0PEFjdGlvbkNvbXBvbmVudD4pID0+IHRoaXMuZm9jdXNPbkZpcnN0TWVudShxbCkpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzYWZlVW5zdWJzY3JpYmUodGhpcy5zdWIpO1xuICAgIH1cbn1cbiIsIjxub2YtYWN0aW9uICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiIFthY3Rpb25dPVwiYWN0aW9uXCI+PC9ub2YtYWN0aW9uPlxuIl19