UNPKG

@nakedobjects/gemini

Version:

Single Page Application client for a Naked Objects application.

51 lines 8.17 kB
import { Component, Input, ViewChildren } from '@angular/core'; import flatten from 'lodash-es/flatten'; import map from 'lodash-es/map'; import some from 'lodash-es/some'; import { wrapAction } from '../action/action.component'; import { ActionComponent } from '../action/action.component'; import { safeUnsubscribe } from '../helpers-components'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "../action/action.component"; export class ActionBarComponent { actions; set menuHolder(mhvm) { const menuItems = mhvm.menuItems; const avms = flatten(map(menuItems || [], (mi) => mi.actions)); this.actions = map(avms, a => wrapAction(a)); } actionChildren; sub; classes(action) { const hint = action.presentationHint ?? ''; return hint.trim(); } focusOnFirstAction(actions) { if (actions) { // until first element returns true some(actions.toArray(), i => i.focus()); } } ngAfterViewInit() { this.focusOnFirstAction(this.actionChildren); this.sub = this.actionChildren?.changes.subscribe((ql) => this.focusOnFirstAction(ql)); } ngOnDestroy() { safeUnsubscribe(this.sub); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ActionBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ActionBarComponent, selector: "nof-action-bar", inputs: { actions: "actions", menuHolder: "menuHolder" }, viewQueries: [{ propertyName: "actionChildren", predicate: ActionComponent, descendants: true }], ngImport: i0, template: "<nof-action [ngClass]=\"classes(action)\" *ngFor=\"let action of actions\" [action]=\"action\"></nof-action>\n\n", styles: [":host{display:block}nof-action{outline:none;display:block;float:left;padding:var(--space-3);margin-left:var(--space-1);margin-right:var(--space-4);margin-bottom:var(--space-3);font-weight:var(--font-weight-2)er;font-size:var(--font-size-2)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.ActionComponent, selector: "nof-action", inputs: ["action"] }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ActionBarComponent, decorators: [{ type: Component, args: [{ selector: 'nof-action-bar', template: "<nof-action [ngClass]=\"classes(action)\" *ngFor=\"let action of actions\" [action]=\"action\"></nof-action>\n\n", styles: [":host{display:block}nof-action{outline:none;display:block;float:left;padding:var(--space-3);margin-left:var(--space-1);margin-right:var(--space-4);margin-bottom:var(--space-3);font-weight:var(--font-weight-2)er;font-size:var(--font-size-2)}\n"] }] }], propDecorators: { actions: [{ type: Input }], menuHolder: [{ type: Input }], actionChildren: [{ type: ViewChildren, args: [ActionComponent] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9nZW1pbmkvc3JjL2FjdGlvbi1iYXIvYWN0aW9uLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9nZW1pbmkvc3JjL2FjdGlvbi1iYXIvYWN0aW9uLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQXdCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRyxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUN4QyxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUM7QUFDaEMsT0FBTyxJQUFJLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEMsT0FBTyxFQUFpQixVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBT3hELE1BQU0sT0FBTyxrQkFBa0I7SUFHM0IsT0FBTyxDQUFtQjtJQUUxQixJQUNJLFVBQVUsQ0FBQyxJQUEwQjtRQUNyQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQXFCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFHRCxjQUFjLENBQThCO0lBRXBDLEdBQUcsQ0FBaUI7SUFFNUIsT0FBTyxDQUFDLE1BQXFCO1FBQ3pCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGtCQUFrQixDQUFDLE9BQW9DO1FBQ25ELElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixtQ0FBbUM7WUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUE4QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2SCxDQUFDO0lBRUQsV0FBVztRQUNQLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQzt1R0FwQ1Esa0JBQWtCOzJGQUFsQixrQkFBa0IsbUpBWWIsZUFBZSxnREMzQmpDLGtIQUVBOzsyRkRhYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0ksZ0JBQWdCOzhCQU8xQixPQUFPO3NCQUROLEtBQUs7Z0JBSUYsVUFBVTtzQkFEYixLQUFLO2dCQVFOLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1lbnVIb2xkZXJWaWV3TW9kZWwsIE1lbnVJdGVtVmlld01vZGVsIH0gZnJvbSAnQG5ha2Vkb2JqZWN0cy92aWV3LW1vZGVscyc7XG5pbXBvcnQgZmxhdHRlbiBmcm9tICdsb2Rhc2gtZXMvZmxhdHRlbic7XG5pbXBvcnQgbWFwIGZyb20gJ2xvZGFzaC1lcy9tYXAnO1xuaW1wb3J0IHNvbWUgZnJvbSAnbG9kYXNoLWVzL3NvbWUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uTGlrZSBhcyBJU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJQWN0aW9uSG9sZGVyLCB3cmFwQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9uL2FjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYWN0aW9uL2FjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgc2FmZVVuc3Vic2NyaWJlIH0gZnJvbSAnLi4vaGVscGVycy1jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdub2YtYWN0aW9uLWJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICdhY3Rpb24tYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnYWN0aW9uLWJhci5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQWN0aW9uQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcblxuICAgIEBJbnB1dCgpXG4gICAgYWN0aW9ucz86IElBY3Rpb25Ib2xkZXJbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1lbnVIb2xkZXIobWh2bTogSU1lbnVIb2xkZXJWaWV3TW9kZWwpIHtcbiAgICAgICAgY29uc3QgbWVudUl0ZW1zID0gbWh2bS5tZW51SXRlbXM7XG4gICAgICAgIGNvbnN0IGF2bXMgPSBmbGF0dGVuKG1hcChtZW51SXRlbXMgfHwgW10sIChtaTogTWVudUl0ZW1WaWV3TW9kZWwpID0+IG1pLmFjdGlvbnMhKSk7XG4gICAgICAgIHRoaXMuYWN0aW9ucyA9IG1hcChhdm1zLCBhID0+IHdyYXBBY3Rpb24oYSkpO1xuICAgIH1cblxuICAgIEBWaWV3Q2hpbGRyZW4oQWN0aW9uQ29tcG9uZW50KVxuICAgIGFjdGlvbkNoaWxkcmVuPzogUXVlcnlMaXN0PEFjdGlvbkNvbXBvbmVudD47XG5cbiAgICBwcml2YXRlIHN1Yj86IElTdWJzY3JpcHRpb247XG5cbiAgICBjbGFzc2VzKGFjdGlvbjogSUFjdGlvbkhvbGRlcikge1xuICAgICAgICBjb25zdCBoaW50ID0gYWN0aW9uLnByZXNlbnRhdGlvbkhpbnQgPz8gJyc7XG4gICAgICAgIHJldHVybiBoaW50LnRyaW0oKTtcbiAgICB9XG5cbiAgICBmb2N1c09uRmlyc3RBY3Rpb24oYWN0aW9ucz86IFF1ZXJ5TGlzdDxBY3Rpb25Db21wb25lbnQ+KSB7XG4gICAgICAgIGlmIChhY3Rpb25zKSB7XG4gICAgICAgICAgICAvLyB1bnRpbCBmaXJzdCBlbGVtZW50IHJldHVybnMgdHJ1ZVxuICAgICAgICAgICAgc29tZShhY3Rpb25zLnRvQXJyYXkoKSwgaSA9PiBpLmZvY3VzKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzT25GaXJzdEFjdGlvbih0aGlzLmFjdGlvbkNoaWxkcmVuKTtcbiAgICAgICAgdGhpcy5zdWIgPSB0aGlzLmFjdGlvbkNoaWxkcmVuPy5jaGFuZ2VzLnN1YnNjcmliZSgocWw6IFF1ZXJ5TGlzdDxBY3Rpb25Db21wb25lbnQ+KSA9PiB0aGlzLmZvY3VzT25GaXJzdEFjdGlvbihxbCkpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzYWZlVW5zdWJzY3JpYmUodGhpcy5zdWIpO1xuICAgIH1cbn1cbiIsIjxub2YtYWN0aW9uIFtuZ0NsYXNzXT1cImNsYXNzZXMoYWN0aW9uKVwiICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiIFthY3Rpb25dPVwiYWN0aW9uXCI+PC9ub2YtYWN0aW9uPlxuXG4iXX0=