{"version":3,"file":"nakedobjects-gemini.mjs","sources":["../../../gemini/src/helpers-components.ts","../../../gemini/src/click.directive.ts","../../../gemini/src/action/action.component.ts","../../../gemini/src/action/action.component.html","../../../gemini/src/action-list/action-list.component.ts","../../../gemini/src/action-list/action-list.component.html","../../../gemini/src/action-bar/action-bar.component.ts","../../../gemini/src/action-bar/action-bar.component.html","../../../gemini/src/version.ts","../../../gemini/src/application-properties/application-properties.component.ts","../../../gemini/src/application-properties/application-properties.component.html","../../../gemini/src/pane/pane.ts","../../../gemini/src/attachment/attachment.component.ts","../../../gemini/src/attachment/attachment.component.html","../../../gemini/src/attachment-property/attachment-property.component.ts","../../../gemini/src/attachment-property/attachment-property.component.html","../../../gemini/src/base-dialog/base-dialog.component.ts","../../../gemini/src/field/field.component.ts","../../../gemini/src/clear.directive.ts","../../../gemini/src/date-picker/date-picker.component.ts","../../../gemini/src/date-picker/date-picker.component.html","../../../gemini/src/date-picker-facade/date-picker-facade.component.ts","../../../gemini/src/date-picker-facade/date-picker-facade.component.html","../../../gemini/src/auto-complete/auto-complete.component.ts","../../../gemini/src/auto-complete/auto-complete.component.html","../../../gemini/src/time-picker/time-picker.component.ts","../../../gemini/src/time-picker/time-picker.component.html","../../../gemini/src/time-picker-facade/time-picker-facade.component.ts","../../../gemini/src/time-picker-facade/time-picker-facade.component.html","../../../gemini/src/edit-parameter/edit-parameter.component.ts","../../../gemini/src/edit-parameter/edit-parameter.component.html","../../../gemini/src/view-parameter/view-parameter.component.ts","../../../gemini/src/view-parameter/view-parameter.component.html","../../../gemini/src/parameters/parameters.component.ts","../../../gemini/src/parameters/parameters.component.html","../../../gemini/src/dialog/dialog.component.ts","../../../gemini/src/dialog/dialog.component.html","../../../gemini/src/row/row.component.ts","../../../gemini/src/row/row.component.html","../../../gemini/src/header/header.component.ts","../../../gemini/src/header/header.component.html","../../../gemini/src/collection/collection.component.ts","../../../gemini/src/collection/collection.component.html","../../../gemini/src/collections/collections.component.ts","../../../gemini/src/collections/collections.component.html","../../../gemini/src/error/error.component.ts","../../../gemini/src/error/error.component.html","../../../gemini/src/list/list.component.ts","../../../gemini/src/list/list.component.html","../../../gemini/src/edit-property/edit-property.component.ts","../../../gemini/src/edit-property/edit-property.component.html","../../../gemini/src/view-property/view-property.component.ts","../../../gemini/src/view-property/view-property.component.html","../../../gemini/src/properties/properties.component.ts","../../../gemini/src/properties/properties.component.html","../../../gemini/src/edit-dialog/edit-dialog.component.ts","../../../gemini/src/edit-dialog/edit-dialog.component.html","../../../gemini/src/create-new-dialog/create-new-dialog.component.ts","../../../gemini/src/create-new-dialog/create-new-dialog.component.html","../../../gemini/src/object/object.component.ts","../../../gemini/src/object/object.component.html","../../../gemini/src/object-not-found-error/object-not-found-error.component.ts","../../../gemini/src/object-not-found-error/object-not-found-error.component.html","../../../gemini/src/custom-component-config.service.ts","../../../gemini/src/custom-component.service.ts","../../../gemini/src/dynamic-error/dynamic-error.component.ts","../../../gemini/src/dynamic-error/dynamic-error.component.html","../../../gemini/src/dynamic-list/dynamic-list.component.ts","../../../gemini/src/dynamic-list/dynamic-list.component.html","../../../gemini/src/dynamic-object/dynamic-object.component.ts","../../../gemini/src/dynamic-object/dynamic-object.component.html","../../../gemini/src/footer/footer.component.ts","../../../gemini/src/footer/footer.component.html","../../../gemini/src/menu-bar/menu-bar.component.ts","../../../gemini/src/menu-bar/menu-bar.component.html","../../../gemini/src/home/home.component.ts","../../../gemini/src/home/home.component.html","../../../gemini/src/multi-line-dialog/multi-line-dialog.component.ts","../../../gemini/src/multi-line-dialog/multi-line-dialog.component.html","../../../gemini/src/recent/recent.component.ts","../../../gemini/src/recent/recent.component.html","../../../gemini/src/login/login.component.ts","../../../gemini/src/login/login.component.html","../../../gemini/src/logoff/logoff.component.ts","../../../gemini/src/logoff/logoff.component.html","../../../gemini/src/callback/callback.component.ts","../../../gemini/src/callback/callback.component.html","../../../gemini/src/lib.module.ts","../../../gemini/src/nakedobjects-gemini.ts"],"sourcesContent":["import { ElementRef } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup } from '@angular/forms';\nimport { DialogViewModel, FieldViewModel, IDraggableViewModel, ParameterViewModel } from '@nakedobjects/view-models';\nimport { Dictionary } from 'lodash';\nimport forEach from 'lodash-es/forEach';\nimport map from 'lodash-es/map';\nimport mapValues from 'lodash-es/mapValues';\nimport zipObject from 'lodash-es/zipObject';\nimport { SubscriptionLike as ISubscription } from 'rxjs';\n\nexport function safeUnsubscribe(sub?: ISubscription) {\n    if (sub) {\n        sub.unsubscribe();\n    }\n}\n\nfunction isFocusable(nativeElement: unknown): nativeElement is { focus: () => void } {\n    return !!(nativeElement && nativeElement instanceof Object && 'focus' in nativeElement);\n}\n\nfunction safeFocus(nativeElement: unknown) {\n    if (isFocusable(nativeElement)) {\n        nativeElement.focus();\n    }\n}\n\nexport function focus(element?: ElementRef) {\n    setTimeout(() => safeFocus(element?.nativeElement));\n    return true;\n}\n\nexport function createForm(dialog: DialogViewModel, formBuilder: FormBuilder): { form: FormGroup, dialog: DialogViewModel, parms: Dictionary<ParameterViewModel>, sub: ISubscription } {\n    const pps = dialog.parameters;\n    const parms = zipObject(map(pps, p => p.id), map(pps, p => p)) as Dictionary<ParameterViewModel>;\n    const controls = mapValues(parms, p => [p.getValueForControl(), (a: AbstractControl) => p.validator(a)]);\n    const form = formBuilder.group(controls);\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const sub = form.valueChanges.subscribe((data : any) => {\n        // cache parm values\n        forEach(data, (v, k) => parms[k!].setValueFromControl(v));\n        dialog.setParms();\n    });\n\n    return { form: form, dialog: dialog, parms: parms, sub: sub };\n}\n\nexport function accept(droppableVm: FieldViewModel, component: { canDrop: boolean }, draggableVm: IDraggableViewModel) {\n    if (draggableVm) {\n        draggableVm.canDropOn(droppableVm.returnType).\n            then(canDrop => component.canDrop = canDrop).\n            catch(() => component.canDrop = false);\n        return true;\n    }\n    return false;\n}\n\nexport function dropOn(draggableVm: IDraggableViewModel, droppable: FieldViewModel, component: { canDrop: boolean, control: AbstractControl }) {\n    if (component.canDrop) {\n        droppable.drop(draggableVm)\n            .then(() => {\n                component.control.setValue(droppable.selectedChoice);\n            });\n    }\n}\n\nexport function paste(event: KeyboardEvent, droppable: FieldViewModel, component: { control: AbstractControl }, get: () => IDraggableViewModel | null, clear: () => void) {\n    const vKeyCode = 86;\n    const deleteKeyCode = 46;\n    if (event && (event.keyCode === vKeyCode && event.ctrlKey)) {\n        const cvm = get();\n\n        if (cvm) {\n            droppable.drop(cvm)\n                .then(() => {\n                    component.control.setValue(droppable.selectedChoice);\n                });\n            event.preventDefault();\n        }\n    }\n    if (event && event.keyCode === deleteKeyCode) {\n        clear();\n    }\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\n\n@Directive({ selector: '[nofClick]', standalone: false })\nexport class ClickDirective {\n    private readonly el: HTMLElement;\n    constructor(el: ElementRef) {\n        this.el = el.nativeElement;\n    }\n\n    @Output() leftClick = new EventEmitter();\n    @Output() rightClick = new EventEmitter();\n\n    @HostListener('click') onClick() {\n\n        this.leftClick.emit('event');\n        return false;\n    }\n\n    handleKey(event: KeyboardEvent) {\n        const enterKeyCode = 13;\n        if (event.which === enterKeyCode) {\n            const trigger = event.shiftKey ? this.rightClick : this.leftClick;\n            trigger.emit('event');\n            return false;\n        }\n\n        return true;\n    }\n\n    @HostListener('keydown', ['$event']) onEnter(event: KeyboardEvent) {\n        return this.handleKey(event);\n    }\n\n    @HostListener('keypress', ['$event']) onEnter1(event: KeyboardEvent) {\n        return this.handleKey(event);\n    }\n\n    @HostListener('contextmenu') onContextMenu() {\n        this.rightClick.emit('event');\n        return false;\n    }\n}\n","import { Component, ElementRef, Input, QueryList, ViewChildren } from '@angular/core';\nimport { ActionViewModel } from '@nakedobjects/view-models';\nimport { focus } from '../helpers-components';\n\nexport interface IActionHolder {\n    doClick: () => void;\n    doRightClick?: () => void;\n    show: () => boolean;\n    disabled: () => boolean | null;\n    tempDisabled: () => boolean | null;\n    value: string;\n    title: () => string;\n    accesskey: string | null;\n    presentationHint: string;\n    showDialog: () => boolean;\n}\n\nexport function wrapAction(a: ActionViewModel): IActionHolder {\n    return {\n        value: a.title,\n        doClick: () => a.doInvoke(),\n        doRightClick: () => a.doInvoke(true),\n        show: () => true,\n        disabled: () => a.disabled() ? true : null,\n        tempDisabled: () => a.tempDisabled(),\n        title: () => a.description,\n        accesskey: null,\n        presentationHint: a.presentationHint,\n        showDialog: () => a.showDialog()\n    };\n}\n\n@Component({\n    selector: 'nof-action',\n    templateUrl: 'action.component.html',\n    styleUrls: ['action.component.css'],\n    standalone: false\n})\nexport class ActionComponent {\n\n    @Input({ required: true })\n    action!: IActionHolder;\n\n    @ViewChildren('focus')\n    focusList?: QueryList<ElementRef>;\n\n    private canClick() {\n        return !(this.disabled() || this.tempDisabled());\n    }\n\n    doClick() {\n        if (this.canClick()) {\n            this.action.doClick();\n        }\n    }\n\n    doRightClick() {\n        if (this.canClick() && this.action.doRightClick) {\n            this.action.doRightClick();\n        }\n    }\n\n    class() {\n        return ({\n            tempdisabled: this.tempDisabled(),\n            [this.dialogClass()]: true,\n        });\n    }\n\n    show() {\n        return this.action.show();\n    }\n\n    disabled() {\n        return this.action.disabled();\n    }\n\n    tempDisabled() {\n        return this.action.tempDisabled();\n    }\n\n    dialogClass() {\n        return this.showDialog() ? 'has-params' : 'no-params';\n    }\n\n    showDialog() {\n        return this.action.showDialog();\n    }\n\n    get value() {\n        return this.action.value;\n    }\n\n    get title() {\n        return this.action.title();\n    }\n\n    focus() {\n        if (this.disabled()) {\n            return false;\n        }\n        return !!(this.focusList && this.focusList.first) && focus(this.focusList.first);\n    }\n}\n","<input #focus tabindex=\"0\" type=\"button\" nofClick (leftClick)=\"doClick()\" (rightClick)=\"doRightClick()\"  [value]=\"value\" [disabled]=\"disabled()\" *ngIf=\"show()\" [title]=\"title\" [ngClass]=\"class()\">\n","import { AfterViewInit, Component, Input, OnDestroy, QueryList, ViewChildren } from '@angular/core';\nimport { ActionViewModel, IMenuHolderViewModel, MenuItemViewModel } from '@nakedobjects/view-models';\nimport difference from 'lodash-es/difference';\nimport findIndex from 'lodash-es/findIndex';\nimport first from 'lodash-es/first';\nimport map from 'lodash-es/map';\nimport some from 'lodash-es/some';\nimport { SubscriptionLike as ISubscription } from 'rxjs';\nimport { ActionComponent } from '../action/action.component';\nimport { IActionHolder, wrapAction } from '../action/action.component';\nimport { safeUnsubscribe } from '../helpers-components';\n\n@Component({\n    selector: 'nof-action-list',\n    templateUrl: 'action-list.component.html',\n    styleUrls: ['action-list.component.css'],\n    standalone: false\n})\nexport class ActionListComponent implements AfterViewInit, OnDestroy {\n\n    private previousActionChildrenNames: string[] = [];\n    private holder!: IMenuHolderViewModel;\n    private sub?: ISubscription;\n\n    @ViewChildren(ActionComponent)\n    actionChildren?: QueryList<ActionComponent>;\n\n    @Input()\n    set menuHolder(mh: IMenuHolderViewModel) {\n        this.holder = mh;\n        this.actionHolders = []; // clear cache;\n    }\n\n    get menuHolder() {\n        return this.holder;\n    }\n\n    get items() {\n        return this.menuHolder.menuItems;\n    }\n\n    private actionHolders: IActionHolder[][] = [];\n\n    private getActionHolders(menuItem: MenuItemViewModel) {\n        return map(menuItem.actions, a => wrapAction(a));\n    }\n\n    hasActions = (menuItem: MenuItemViewModel) => {\n        const actions = menuItem.actions;\n        return actions && actions.length > 0;\n    };\n\n    hasItems = (menuItem: MenuItemViewModel) => {\n        const items = menuItem.menuItems;\n        return items && items.length > 0;\n    };\n\n    menuName = (menuItem: MenuItemViewModel) => menuItem.name;\n\n    menuItems = (menuItem: MenuItemViewModel) => menuItem.menuItems;\n\n    menuActions = (menuItem: MenuItemViewModel, index: number) => {\n        if (!this.actionHolders[index]) {\n            this.actionHolders[index] = this.getActionHolders(menuItem);\n        }\n        return this.actionHolders[index];\n    };\n\n    toggleCollapsed = (menuItem: MenuItemViewModel) => menuItem.toggleCollapsed();\n\n    navCollapsed = (menuItem: MenuItemViewModel) => menuItem.navCollapsed;\n\n    displayClass = (menuItem: MenuItemViewModel) => ({ collapsed: menuItem.navCollapsed, open: !menuItem.navCollapsed, rootMenu: !menuItem.name });\n\n    classes(action: ActionViewModel | IActionHolder ) {\n        const hint = action.presentationHint ?? '';\n        return hint.trim();\n    }\n\n    focusFromIndex(actions: QueryList<ActionComponent>, index = 0) {\n\n        const toFocus = actions.toArray().slice(index);\n\n        if (toFocus && toFocus.length > 0) {\n            // until first element returns true\n            some(toFocus, i => i.focus());\n        }\n    }\n\n    focus(actions?: QueryList<ActionComponent>) {\n        if (actions && actions.length > 0) {\n            const actionChildrenNames = map(actions.toArray(), a => a.action.value);\n            const newActions = difference(actionChildrenNames, this.previousActionChildrenNames);\n            let index = 0;\n\n            if (newActions && newActions.length > 0) {\n                const firstAction = first(newActions);\n                index = findIndex(actions.toArray(), a => a.action.value === firstAction);\n                index = index < 0 ? 0 : index;\n            }\n            this.previousActionChildrenNames = actionChildrenNames;\n            this.focusFromIndex(actions, index);\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.focus(this.actionChildren);\n        this.sub = this.actionChildren?.changes.subscribe((ql: QueryList<ActionComponent>) => this.focus(ql));\n    }\n\n    ngOnDestroy(): void {\n        safeUnsubscribe(this.sub);\n    }\n}\n","<ng-container *ngFor=\"let menu of items; let i = index\">\n\n    <div *ngIf=\"menuName(menu)\" (click)=\"toggleCollapsed(menu)\" (keydown.enter)=\"toggleCollapsed(menu)\" class=\"submenu\" [ngSwitch]=\"navCollapsed(menu)\" tabindex=\"0\">\n        {{menuName(menu)}}\n        <div *ngSwitchCase=\"true\" (keydown.enter)=\"toggleCollapsed(menu)\" class=\"icon-expand\" tabindex=\"0\"></div>\n        <div *ngSwitchCase=\"false\" (keydown.enter)=\"toggleCollapsed(menu)\" class=\"icon-collapse\" tabindex=\"0\"></div>\n    </div>\n    <div  *ngIf=\"!navCollapsed(menu)\"  class=\"menuitem\" [ngClass]=\"displayClass(menu)\">\n        <ng-container *ngIf=\"hasActions(menu)\">\n            <ng-container *ngFor=\"let action of menuActions(menu, i)\">\n                <nof-action [ngClass]=\"classes(action)\" [action]=\"action\"></nof-action>\n            </ng-container>\n        </ng-container>\n        <ng-container  *ngIf=\"hasItems(menu)\">\n            <nof-action-list [menuHolder]=\"menu\"></nof-action-list>\n        </ng-container>\n    </div>\n</ng-container>\n","import { AfterViewInit, Component, Input, OnDestroy, QueryList, ViewChildren } from '@angular/core';\nimport { IMenuHolderViewModel, MenuItemViewModel } from '@nakedobjects/view-models';\nimport flatten from 'lodash-es/flatten';\nimport map from 'lodash-es/map';\nimport some from 'lodash-es/some';\nimport { SubscriptionLike as ISubscription } from 'rxjs';\nimport { IActionHolder, wrapAction } from '../action/action.component';\nimport { ActionComponent } from '../action/action.component';\nimport { safeUnsubscribe } from '../helpers-components';\n\n@Component({\n    selector: 'nof-action-bar',\n    templateUrl: 'action-bar.component.html',\n    styleUrls: ['action-bar.component.css'],\n    standalone: false\n})\nexport class ActionBarComponent implements OnDestroy, AfterViewInit {\n\n    @Input()\n    actions?: IActionHolder[];\n\n    @Input()\n    set menuHolder(mhvm: IMenuHolderViewModel) {\n        const menuItems = mhvm.menuItems;\n        const avms = flatten(map(menuItems || [], (mi: MenuItemViewModel) => mi.actions!));\n        this.actions = map(avms, a => wrapAction(a));\n    }\n\n    @ViewChildren(ActionComponent)\n    actionChildren?: QueryList<ActionComponent>;\n\n    private sub?: ISubscription;\n\n    classes(action: IActionHolder) {\n        const hint = action.presentationHint ?? '';\n        return hint.trim();\n    }\n\n    focusOnFirstAction(actions?: QueryList<ActionComponent>) {\n        if (actions) {\n            // until first element returns true\n            some(actions.toArray(), i => i.focus());\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.focusOnFirstAction(this.actionChildren);\n        this.sub = this.actionChildren?.changes.subscribe((ql: QueryList<ActionComponent>) => this.focusOnFirstAction(ql));\n    }\n\n    ngOnDestroy(): void {\n        safeUnsubscribe(this.sub);\n    }\n}\n","<nof-action [ngClass]=\"classes(action)\" *ngFor=\"let action of actions\" [action]=\"action\"></nof-action>\n\n","// updated by build do not update manually or change name or regex may not match\nexport const clientVersion = '17.0.0';\n","import { Component, OnInit } from '@angular/core';\nimport { ApplicationPropertiesViewModel, ViewModelFactoryService } from '@nakedobjects/view-models';\nimport { clientVersion } from '../version';\n\n@Component({\n    selector: 'nof-application-properties',\n    templateUrl: 'application-properties.component.html',\n    styleUrls: ['application-properties.component.css'],\n    standalone: false\n})\nexport class ApplicationPropertiesComponent implements OnInit {\n\n    constructor(private readonly viewModelFactory: ViewModelFactoryService) { }\n\n    get applicationName() {\n        return this.applicationProperties?.applicationName ?? '';\n    }\n\n    get userName() {\n        return this.applicationProperties?.userName ?? '';\n    }\n\n    get serverUrl() {\n        return this.applicationProperties?.serverUrl ?? '';\n    }\n\n    get implVersion() {\n        return this.applicationProperties?.serverVersion?.implVersion ?? '';\n    }\n\n    get apiVersion() {\n        return this.applicationProperties?.serverVersion?.specVersion ?? '';\n    }\n\n    get appVersion() {\n        return this.applicationProperties?.serverVersion?.appVersion ?? '';\n    }\n\n    get clientVersion() {\n        return clientVersion;\n    }\n\n    private applicationProperties?: ApplicationPropertiesViewModel;\n\n    ngOnInit(): void {\n        this.applicationProperties = this.viewModelFactory.applicationPropertiesViewModel();\n    }\n}\n","<div id=\"pane1\" class=\"single\">\n    <div class=\"applicationproperties\">\n        <div class=\"header\">\n            <div class=\"title\">Application Properties</div>\n        </div>\n        <div class=\"main-column\">\n            <div class=\"properties\">\n                <div class=\"property\">\n                    Application Name: {{applicationName}}\n                </div>\n                <div class=\"property\">\n                    User Name: {{userName}}\n                </div>\n                <div class=\"property\">\n                    Server Url: {{serverUrl}}\n                </div>\n                <div class=\"property\">\n                    Server API version: {{apiVersion}}\n                </div>\n                <div class=\"property\">\n                    Server Framework version: {{implVersion}}\n                </div>\n                <div class=\"property\">\n                    Server Application version: {{appVersion}}\n                </div>\n                <div class=\"property\">\n                    Client version: {{clientVersion}}\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ContextService, ICustomActivatedRouteData, Pane, PaneName, PaneRouteData, PaneType, UrlManagerService } from '@nakedobjects/services';\nimport { SubscriptionLike as ISubscription } from 'rxjs';\nimport { safeUnsubscribe } from '../helpers-components';\n\n@Component({template : '<div></div>'})\nexport abstract class PaneComponent implements OnInit, OnDestroy {\n\n    constructor(\n        protected readonly activatedRoute: ActivatedRoute,\n        protected readonly urlManager: UrlManagerService,\n        protected readonly context: ContextService\n    ) {\n    }\n\n    private activatedRouteDataSub?: ISubscription;\n    private paneRouteDataSub?: ISubscription;\n    private lastPaneRouteData?: PaneRouteData;\n\n    // pane API\n    paneId?: Pane;\n    paneType?: PaneType;\n    paneIdName?: PaneName;\n    arData?: ICustomActivatedRouteData;\n\n    onChild() {\n        setTimeout(() => this.paneType = 'split');\n    }\n\n    onChildless() {\n        setTimeout(() => this.paneType = 'single');\n    }\n\n    protected abstract setup(routeData: PaneRouteData): void;\n    protected doSetup(routeData: PaneRouteData) {\n        return !routeData.isEqual(this.lastPaneRouteData);\n    }\n\n    ngOnInit(): void {\n        this.activatedRouteDataSub = this.activatedRoute.data.subscribe(d => {\n            const data = d as ICustomActivatedRouteData;\n            this.arData = data;\n            this.paneId = data.pane;\n            this.paneType = data.paneType;\n            this.paneIdName = this.paneId === 1 ? 'pane1' : 'pane2';\n\n            if (!this.paneRouteDataSub) {\n                this.paneRouteDataSub =\n                    this.urlManager.getPaneRouteDataObservable(this.paneId)\n                        .subscribe((paneRouteData: PaneRouteData) => {\n                            if (!paneRouteData.isEqualIgnoringReload(this.lastPaneRouteData)) {\n                                // only remove messages if something more than reload flag has changed\n                                this.context.clearMessages();\n                                this.context.clearWarnings();\n                            }\n\n                            if (this.doSetup(paneRouteData)) {\n                                this.lastPaneRouteData = paneRouteData;\n                                this.setup(paneRouteData);\n                            }\n                        });\n            }\n        });\n    }\n\n    ngOnDestroy(): void {\n        safeUnsubscribe(this.activatedRouteDataSub);\n        safeUnsubscribe(this.paneRouteDataSub);\n    }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport * as Ro from '@nakedobjects/restful-objects';\nimport { ConfigService, ContextService, ErrorService, ErrorWrapper, PaneRouteData, UrlManagerService } from '@nakedobjects/services';\nimport { ViewModelFactoryService } from '@nakedobjects/view-models';\nimport { PaneComponent } from '../pane/pane';\n\n@Component({\n    selector: 'nof-attachment',\n    templateUrl: 'attachment.component.html',\n    styleUrls: ['attachment.component.css'],\n    standalone: false\n})\nexport class AttachmentComponent extends PaneComponent {\n\n    constructor(\n        activatedRoute: ActivatedRoute,\n        urlManager: UrlManagerService,\n        private readonly viewModelFactory: ViewModelFactoryService,\n        context: ContextService,\n        private readonly error: ErrorService,\n        private readonly configService: ConfigService\n    ) {\n        super(activatedRoute, urlManager, context);\n    }\n\n    // template API\n    image?: string;\n    title = '';\n\n    protected setup(routeData: PaneRouteData) {\n\n        const oid = Ro.ObjectIdWrapper.fromObjectId(routeData.objectId!, this.configService.config.keySeparator);\n\n        this.context.getObject(routeData.paneId, oid, routeData.interactionMode!)\n            .then((object: Ro.DomainObjectRepresentation) => {\n\n                const attachmentId = routeData.attachmentId;\n                const attachment = attachmentId ? object.propertyMember(attachmentId) : undefined;\n\n                if (attachment) {\n                    const avm = this.viewModelFactory.attachmentViewModel(attachment, routeData.paneId);\n\n                    if (avm) {\n                        avm.setImage(this);\n                    }\n                }\n            })\n            .catch((reject: ErrorWrapper) => this.error.handleError(reject));\n    }\n}\n","<div [attr.id]=\"paneIdName\" [ngClass]=\"paneType\">\n    <div class=\"attachment view\">\n        <div class=\"reference\">\n            <img *ngIf=\"image\" src=\"{{image}}\" alt=\"{{title}}\" />\n        </div>\n    </div>\n</div>\n<router-outlet (activate)=\"onChild()\" (deactivate)=\"onChildless()\"></router-outlet>\n","import { Component, Input } from '@angular/core';\nimport { ClickHandlerService, ErrorService, ErrorWrapper, UrlManagerService } from '@nakedobjects/services';\nimport { AttachmentViewModel } from '@nakedobjects/view-models';\n\n@Component({\n    selector: 'nof-attachment-property',\n    templateUrl: 'attachment-property.component.html',\n    styleUrls: ['attachment-property.component.css'],\n    standalone: false\n})\nexport class AttachmentPropertyComponent {\n\n    constructor(\n        private readonly error: ErrorService,\n        private readonly urlManager: UrlManagerService,\n        private readonly clickHandlerService: ClickHandlerService\n    ) { }\n\n    private attach: AttachmentViewModel | null = null;\n\n    @Input()\n    set attachment(avm: AttachmentViewModel | null) {\n        this.attach = avm;\n        this.setup();\n    }\n\n    get attachment() {\n        return this.attach;\n    }\n\n    title = 'Empty';\n    image?: string;\n\n    doAttachmentClick = (right?: boolean) => {\n        if (this.attachment!.empty && !this.image) {\n            return;\n        }\n\n        if (this.attachment!.displayInline()) {\n            this.urlManager.setAttachment(this.attachment!.link, this.clickHandlerService.pane(this.attachment!.onPaneId, right));\n        } else {\n            this.attachment!.downloadFile()\n                .then(blob => {\n                    const burl = URL.createObjectURL(blob);\n                    window.open(burl);\n                })\n                .catch((reject: ErrorWrapper) => this.error.handleError(reject));\n        }\n    };\n\n    private setup() {\n        if (this.attachment) {\n            if (this.attachment.displayInline()) {\n                this.attachment.setImage(this);\n            } else {\n                this.attachment.setTitle(this);\n            }\n        }\n    }\n}\n","<div *ngIf=\"attachment\" class=\"reference file-attachment\" nofClick (leftClick)=\"doAttachmentClick()\" (rightClick)=\"doAttachmentClick(true)\" tabindex=\"0\">\n    <div *ngIf=\"!attachment.empty && !image\">{{title}}</div>\n    <img *ngIf=\"!attachment.empty && image\" src=\"{{image}}\" alt=\"{{title}}\" />\n    <div *ngIf=\"attachment.empty\">{{title}}</div>\n</div>","import { Component, Input, OnDestroy, OnChanges } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport * as Ro from '@nakedobjects/restful-objects';\nimport { ContextService, ErrorService, ErrorWrapper } from '@nakedobjects/services';\nimport {\n    ActionViewModel,\n    CollectionViewModel,\n    DialogViewModel,\n    DomainObjectViewModel,\n    ListViewModel,\n    MenuViewModel,\n    ParameterViewModel,\n    ViewModelFactoryService\n} from '@nakedobjects/view-models';\nimport { Dictionary } from 'lodash';\nimport find from 'lodash-es/find';\nimport forEach from 'lodash-es/forEach';\nimport { SubscriptionLike as ISubscription } from 'rxjs';\nimport { createForm, safeUnsubscribe } from '../helpers-components';\n\n@Component({template : '<div></div>'})\nexport class BaseDialogComponent implements OnDestroy, OnChanges {\n\n    constructor(\n        private readonly viewModelFactory: ViewModelFactoryService,\n        private readonly error: ErrorService,\n        private readonly context: ContextService,\n        private readonly formBuilder: FormBuilder) {\n    }\n\n    private parentViewModel?: MenuViewModel | DomainObjectViewModel | ListViewModel | CollectionViewModel;\n    private parms?: Dictionary<ParameterViewModel>;\n    \n    private formSub?: ISubscription;\n    protected sub?: ISubscription;\n    private createFormSub?: ISubscription;\n\n    protected set parent(parent: MenuViewModel | DomainObjectViewModel | ListViewModel | CollectionViewModel) {\n        this.parentChanged = this.parentViewModel !== parent;\n        this.parentViewModel = parent;\n    }\n\n    protected get parent(): MenuViewModel | DomainObjectViewModel | ListViewModel | CollectionViewModel {\n        return this.parentViewModel!;\n    }\n\n    private currentDialogId?: string;\n    private parentChanged = false;\n\n    @Input()\n    set selectedDialogId(id: string | undefined) {\n        this.currentDialogId = id;\n    }\n\n    get selectedDialogId(): string | undefined {\n        return this.currentDialogId;\n    }\n\n    dialog: DialogViewModel | null = null;\n\n    form?: FormGroup;\n\n    get title() {\n        const dialog = this.dialog;\n        return dialog ? dialog.title : '';\n    }\n\n    get message() {\n        const dialog = this.dialog;\n        return dialog ? dialog.getMessage() : '';\n    }\n\n    get parameters() {\n        const dialog = this.dialog;\n        return dialog ? dialog.parameters : [];\n    }\n\n    get tooltip(): string {\n        const dialog = this.dialog;\n        return dialog ? dialog.tooltip() : '';\n    }\n\n    onSubmit(right?: boolean) {\n        if (this.dialog) {\n            forEach(this.parms,\n                (p, _) => {\n                    if (p.isEditable) {\n                        const newValue = this.form!.value[p.id];\n                        p.setValueFromControl(newValue);\n                    }\n                });\n            this.dialog.doInvoke(right);\n        }\n    }\n\n    close = () => {\n        if (this.dialog) {\n            this.dialog.doCloseReplaceHistory();\n            this.dialog = null;\n        }\n    };\n\n    private createForm(dialog: DialogViewModel) {\n        safeUnsubscribe(this.formSub);\n        safeUnsubscribe(this.createFormSub);\n        ({ form: this.form, dialog: this.dialog, parms: this.parms, sub: this.createFormSub } = createForm(dialog, this.formBuilder));\n        this.formSub = this.form.valueChanges.subscribe((_) => this.onValueChanged());\n    }\n\n    onValueChanged() {\n        if (this.dialog) {\n            // clear messages if dialog changes\n            this.dialog.resetMessage();\n            this.context.clearMessages();\n            this.context.clearWarnings();\n        }\n    }\n\n    closeExistingDialog() {\n        if (this.dialog) {\n            if (this.dialog.id !== this.currentDialogId) {\n                this.dialog.doCloseKeepHistory();\n            } else {\n                this.dialog.doCloseKeepUrl();\n            }\n            this.dialog = null;\n        }\n    }\n\n    getDialog() {\n\n        // if it's the same dialog just return\n\n        if (this.parent && this.currentDialogId) {\n\n            if (!this.parentChanged && this.dialog && this.dialog.id === this.currentDialogId) {\n                return;\n            }\n            this.parentChanged = false;\n\n            const p = this.parent;\n            let action: Ro.ActionMember | Ro.ActionRepresentation | null = null;\n            let actionViewModel: ActionViewModel | null = null;\n\n            if (p instanceof MenuViewModel) {\n                action = p.menuRep.actionMember(this.currentDialogId);\n            }\n\n            if (p instanceof DomainObjectViewModel && p.domainObject.hasActionMember(this.currentDialogId)) {\n                action = p.domainObject.actionMember(this.currentDialogId);\n            }\n\n            if (p instanceof ListViewModel) {\n                action = p.actionMember(this.currentDialogId)!;\n                actionViewModel = find(p.actions, a => a.actionRep.actionId() === this.currentDialogId) || null;\n            }\n\n            if (p instanceof CollectionViewModel && p.hasMatchingLocallyContributedAction(this.currentDialogId)) {\n                action = p.actionMember(this.currentDialogId)!;\n                actionViewModel = find(p.actions, a => a.actionRep.actionId() === this.currentDialogId) || null;\n            }\n\n            if (action) {\n                this.context.getInvokableAction(action)\n                    .then(details => {\n                        // only if we still have a dialog (may have beenn removed while getting invokable action)\n\n                        if (this.currentDialogId) {\n                            // must be a change\n                            this.closeExistingDialog();\n                            const dialogViewModel = this.viewModelFactory.dialogViewModel(this.parent!.routeData, details, actionViewModel, false);\n                            this.createForm(dialogViewModel);\n                        }\n                    })\n                    .catch((reject: ErrorWrapper) => {\n                        this.error.handleError(reject);\n                    });\n            } else {\n                this.closeExistingDialog();\n            }\n\n        } else {\n            this.closeExistingDialog();\n        }\n    }\n\n    ngOnDestroy(): void {\n        safeUnsubscribe(this.createFormSub);\n        safeUnsubscribe(this.formSub);\n        safeUnsubscribe(this.sub);\n        this.closeExistingDialog();\n    }\n\n    ngOnChanges(): void {\n        this.getDialog();\n    }\n}\n","import { Component, ElementRef, OnDestroy, QueryList, Renderer2 } from '@angular/core';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport * as Ro from '@nakedobjects/restful-objects';\nimport { LoggerService, Pane } from '@nakedobjects/services';\nimport {\n    ChoiceViewModel,\n    DialogViewModel,\n    DomainObjectViewModel,\n    DragAndDropService,\n    IDraggableViewModel,\n    MenuViewModel,\n    ParameterViewModel,\n    PropertyViewModel\n} from '@nakedobjects/view-models';\nimport { Dictionary } from 'lodash';\nimport every from 'lodash-es/every';\nimport find from 'lodash-es/find';\nimport keys from 'lodash-es/keys';\nimport mapValues from 'lodash-es/mapValues';\nimport omit from 'lodash-es/omit';\nimport { BehaviorSubject, SubscriptionLike as ISubscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { AutoCompleteComponent } from '../auto-complete/auto-complete.component';\nimport { DatePickerFacadeComponent } from '../date-picker-facade/date-picker-facade.component';\nimport { accept, dropOn, focus, paste, safeUnsubscribe } from '../helpers-components';\nimport { TimePickerFacadeComponent } from '../time-picker-facade/time-picker-facade.component';\nimport { CdkDrag, CdkDropList, CdkDragDrop } from '@angular/cdk/drag-drop';\n\n@Component({ template: '<div></div>' })\nexport abstract class FieldComponent implements OnDestroy {\n\n    protected constructor(\n        private readonly loggerService: LoggerService,\n        private readonly renderer: Renderer2,\n        protected readonly dragAndDrop: DragAndDropService\n    ) { }\n\n    set formGroup(fm: FormGroup) {\n        this.formGrp = fm;\n        this.formGrp.valueChanges.pipe(debounceTime(200)).subscribe(_ => this.onValueChanged());\n        this.onValueChanged(); // (re)set validation messages now\n    }\n\n    get formGroup() {\n        return this.formGrp;\n    }\n\n    get message() {\n        return this.model.getMessage();\n    }\n\n    get isBoolean() {\n        return this.model.returnType === 'boolean';\n    }\n\n    get subject() {\n        if (!this.bSubject) {\n            const initialValue = this.control.value;\n            this.bSubject = new BehaviorSubject(initialValue);\n\n            this.sub = this.control.valueChanges.subscribe((data) => {\n                this.bSubject!.next(data);\n            });\n        }\n\n        return this.bSubject;\n    }\n\n    private formGrp!: FormGroup;\n    private vmParent?: DialogViewModel | DomainObjectViewModel | MenuViewModel;\n    private model!: ParameterViewModel | PropertyViewModel;\n    private isConditionalChoices?: boolean;\n    private isAutoComplete?: boolean;\n    private bSubject?: BehaviorSubject<unknown>;\n    private sub?: ISubscription;\n    private lastArgs?: Dictionary<Ro.Value>;\n\n    control!: AbstractControl;\n    currentOptions: ChoiceViewModel[] = [];\n    pArgs?: Dictionary<Ro.Value>;\n    paneId?: Pane;\n    canDrop = false;\n    dragOver = false;\n\n    abstract checkboxList?: QueryList<ElementRef>;\n    abstract focusList?: QueryList<ElementRef | DatePickerFacadeComponent | TimePickerFacadeComponent | AutoCompleteComponent>;\n\n    protected init(\n        vmParent: DialogViewModel | DomainObjectViewModel | MenuViewModel | undefined,\n        vm: ParameterViewModel | PropertyViewModel,\n        control: AbstractControl) {\n\n        this.vmParent = vmParent;\n        this.model = vm;\n        this.control = control;\n\n        this.paneId = this.model.onPaneId;\n\n        this.isConditionalChoices = (this.model.entryType === Ro.EntryType.ConditionalChoices ||\n            this.model.entryType === Ro.EntryType.MultipleConditionalChoices);\n\n        this.isAutoComplete = this.model.entryType === Ro.EntryType.AutoComplete;\n\n        if (this.isConditionalChoices) {\n            this.pArgs = omit(this.model.promptArguments, 'x-ro-nof-members') as Dictionary<Ro.Value>;\n            this.populateDropdown();\n        }\n    }\n\n    get accept() {\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        const _this = this;\n        return (cdkDrag: CdkDrag<IDraggableViewModel>, _cdkDropList: CdkDropList) => {\n            return accept(_this.model, _this, cdkDrag.data);\n        };\n    }\n\n    drop(event: CdkDragDrop<CdkDrag<IDraggableViewModel>>) {\n        const cdkDrag: CdkDrag<IDraggableViewModel> = event.item;\n        if (event.isPointerOverContainer) {\n            dropOn(cdkDrag.data, this.model, this);\n        }\n        this.canDrop = false;\n        this.dragOver = false;\n    }\n\n    exit() {\n        this.canDrop = false;\n        this.dragOver = false;\n    }\n\n    enter() {\n        this.dragOver = true;\n    }\n\n    private isDomainObjectViewModel(object: unknown): object is DomainObjectViewModel {\n        return !!(object && object instanceof Object && 'properties' in object);\n    }\n\n    private mapValues(args: Dictionary<Ro.Value> | undefined, parmsOrProps: { argId: string, getValue: () => Ro.Value }[]) {\n        return mapValues(args,\n            (v, n) => {\n                const pop = find(parmsOrProps, p => p.argId === n);\n                return pop!.getValue();\n            });\n    }\n\n    private populateArguments() {\n\n        const dialog = this.vmParent as DialogViewModel;\n        const object = this.vmParent as DomainObjectViewModel;\n\n        if (!dialog && !object) {\n            this.loggerService.throw('FieldComponent:populateArguments Expect dialog or object');\n        }\n\n        let parmsOrProps: { argId: string, getValue: () => Ro.Value }[];\n\n        if (this.isDomainObjectViewModel(object)) {\n            parmsOrProps = object.properties;\n        } else {\n            parmsOrProps = dialog.parameters;\n        }\n\n        return this.mapValues(this.pArgs, parmsOrProps);\n    }\n\n    private argsChanged(newArgs: Dictionary<Ro.Value>) {\n        const same = this.lastArgs &&\n            keys(this.lastArgs).length === keys(newArgs).length &&\n            every(this.lastArgs, (v, k) => newArgs[k].toValueString() === v.toValueString());\n\n        this.lastArgs = newArgs;\n        return !same;\n    }\n\n    private populateDropdown() {\n        const nArgs = this.populateArguments();\n        if (this.argsChanged(nArgs)) {\n            const prompts = this.model.conditionalChoices;\n            if (prompts) {\n                prompts(nArgs).\n                    then((cvms: ChoiceViewModel[]) => {\n                        // if unchanged return\n                        if (cvms.length === this.currentOptions.length && every(cvms, (c, i) => c.equals(this.currentOptions[i]))) {\n                            return;\n                        }\n                        this.model.choices = cvms;\n                        this.currentOptions = cvms;\n\n                        if (this.isConditionalChoices) {\n                            // need to reset control to find the selected options\n                            if (this.model.entryType === Ro.EntryType.MultipleConditionalChoices) {\n                                this.control.reset(this.model.selectedMultiChoices);\n                            } else {\n                                this.control.reset(this.model.selectedChoice);\n                            }\n                        }\n                    }).\n                    catch(() => {\n                        // error clear everything\n                        this.model.selectedChoice = null;\n                        this.currentOptions = [];\n                    });\n            }\n        }\n    }\n\n    private onChange() {\n        if (this.isConditionalChoices) {\n            this.populateDropdown();\n        } else if (this.isAutoComplete) {\n            this.populateAutoComplete();\n        } else if (this.isBoolean) {\n            this.populateBoolean();\n        }\n    }\n\n    private onValueChanged() {\n        if (this.model) {\n            this.onChange();\n        }\n    }\n\n    private populateAutoComplete() {\n        const input = this.control.value;\n\n        if (input instanceof ChoiceViewModel) {\n            return;\n        }\n\n        const prompt = this.model.prompt;\n\n        if (prompt && input && input.length > 0 && input.length >= (this.model.minLength ?? 0)) {\n            prompt(input)\n                .then((cvms: ChoiceViewModel[]) => {\n                    if (cvms.length === this.currentOptions.length && every(cvms, (c, i) => c.equals(this.currentOptions[i]))) {\n                        return;\n                    }\n                    this.model.choices = cvms;\n                    this.currentOptions = cvms;\n                    this.model.selectedChoice = null;\n                })\n                .catch(() => {\n                    this.model.choices = [];\n                    this.currentOptions = [];\n                    this.model.selectedChoice = null;\n                });\n        } else {\n            this.model.choices = [];\n            this.currentOptions = [];\n            this.model.selectedChoice = null;\n        }\n    }\n\n    protected populateBoolean() {\n\n        // editable booleans only\n        if (this.isBoolean && this.control) {\n            const input = this.control.value;\n            const element = this.checkboxList?.first.nativeElement;\n            if (input == null) {\n                this.renderer.setProperty(element, 'indeterminate', true);\n                this.renderer.setProperty(element, 'checked', null);\n            } else {\n                this.renderer.setProperty(element, 'indeterminate', false);\n                this.renderer.setProperty(element, 'checked', !!input);\n            }\n        }\n    }\n\n    private select(item: ChoiceViewModel) {\n        this.model.choices = [];\n        this.model.selectedChoice = item;\n        this.control.reset(item);\n    }\n\n    fileUpload(evt: Event) {\n\n        const file: File = (evt.target as HTMLInputElement)!.files![0];\n        const fileReader = new FileReader();\n        fileReader.onloadend = () => {\n            const link = new Ro.Link({\n                href: fileReader.result as string,\n                type: file.type,\n                title: file.name\n            });\n\n            this.control.reset(link);\n            this.model.file = link;\n        };\n\n        fileReader.readAsDataURL(file);\n    }\n\n    paste(event: KeyboardEvent) {\n        paste(event, this.model, this, () => this.dragAndDrop.getCopyViewModel(), () => this.dragAndDrop.setCopyViewModel(null));\n    }\n\n    clear() {\n        if (this.model.isEditable) {\n            this.control.reset('');\n            this.model.clear();\n        }\n    }\n\n    private filterEnter(event: KeyboardEvent) {\n        const enterKeyCode = 13;\n        if (event && event.keyCode === enterKeyCode) {\n            event.preventDefault();\n        }\n    }\n\n    protected handleKeyEvents(event: KeyboardEvent, isMultiline: boolean) {\n        this.paste(event);\n        // catch and filter enters or they will submit form - ok for multiline\n        if (!isMultiline) {\n            this.filterEnter(event);\n        }\n    }\n\n    private triStateClick = (currentValue: unknown) => {\n\n        switch (currentValue) {\n            case false:\n                return true;\n            case true:\n                return null;\n            default: // null\n                return false;\n        }\n    };\n\n    protected handleClick(event: Event) {\n        if (this.isBoolean && this.model.optional) {\n            const currentValue = this.control.value;\n            setTimeout(() => this.control.setValue(this.triStateClick(currentValue)));\n            event.preventDefault();\n        }\n    }\n\n    focus() {\n        const first = this.focusList && this.focusList.first;\n\n        if (first instanceof ElementRef) {\n            return focus(first);\n        }\n        return first && first.focus();\n    }\n\n    ngOnDestroy() {\n        safeUnsubscribe(this.sub);\n    }\n}\n","import {\n    Directive,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output\n} from '@angular/core';\nimport { safeUnsubscribe } from './helpers-components';\nimport { BehaviorSubject, SubscriptionLike as ISubscription } from 'rxjs';\n\n@Directive({ selector: '[nofClear]', standalone: false })\nexport class ClearDirective implements OnInit, OnDestroy {\n\n    private readonly nativeEl: HTMLInputElement;\n\n    constructor(\n        private readonly el: ElementRef\n    ) {\n        this.nativeEl = this.el.nativeElement;\n    }\n\n    @Input('nofClear')\n    subject!: BehaviorSubject<unknown>;\n\n    @Output()\n    clear = new EventEmitter();\n\n    private sub?: ISubscription;\n\n    ngOnInit(): void {\n        this.onChange();\n        this.sub = this.subject.subscribe(_ => this.onChange());\n    }\n\n    // not need the ngClass directive on element even though it doesn't do anything\n    // otherwise we lose all the classes added here\n    onChange() {\n\n        this.nativeEl.classList.add('ng-clearable');\n\n        if (this.subject.getValue()) {\n            this.nativeEl.classList.add('ng-x');\n        } else {\n            this.nativeEl.classList.remove('ng-x');\n        }\n    }\n\n    onMouseMove(event: MouseEvent) {\n        if (this.nativeEl.classList.contains('ng-x')) {\n            const onX = this.nativeEl.offsetWidth - 18 < event.clientX - this.nativeEl.getBoundingClientRect().left;\n            if (onX) {\n                this.nativeEl.classList.add('ng-onX');\n            } else {\n                this.nativeEl.classList.remove('ng-onX');\n            }\n        }\n    }\n\n    onClick(event: KeyboardEvent) {\n        if (this.nativeEl.classList.contains('ng-onX')) {\n\n            event.preventDefault();\n            this.nativeEl.classList.remove('ng-x');\n            this.nativeEl.classList.remove('ng-onX');\n            this.clear.emit('event');\n        }\n    }\n\n    @HostListener('click', ['$event'])\n    click(event: KeyboardEvent) {\n        this.onClick(event);\n    }\n\n    @HostListener('touchstart', ['$event'])\n    touchstart(event: KeyboardEvent) {\n        this.onClick(event);\n    }\n\n    @HostListener('mousemove', ['$event'])\n    mousemove(event: MouseEvent) {\n        this.onMouseMove(event);\n    }\n\n    @HostListener('input')\n    input() {\n        this.onChange();\n    }\n\n    @HostListener('change')\n    change() {\n        this.onChange();\n    }\n\n    ngOnDestroy() {\n        safeUnsubscribe(this.sub);\n    }\n\n}\n","import {\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewChild\n} from '@angular/core';\nimport { validateDate } from '@nakedobjects/view-models';\nimport concat from 'lodash-es/concat';\nimport { DateTime } from 'luxon';\nimport { BehaviorSubject, SubscriptionLike as ISubscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { focus, safeUnsubscribe } from '../helpers-components';\nimport { Dictionary } from 'lodash';\nimport { fixedDateFormat, supportedDateFormats } from '@nakedobjects/services';\n\n// based on ng2-datepicker https://github.com/jkuri/ng2-datepicker\n\nexport type IDatePickerInputEvent = IDatePickerInputDateEvent | IDatePickerInputActionEvent;\n\nexport type IDatePickerOutputEvent = IDatePickerOutputDefaultEvent | IDatePickerOutputChangedEvent | IDatePickerOutputInvalidEvent | IDatePickerOutputClearedEvent;\n\nexport interface IDatePickerInputDateEvent {\n    type: 'setDate';\n    data: string;\n}\n\nexport interface IDatePickerInputActionEvent {\n    type: 'action';\n    data: 'toggle' | 'close' | 'open';\n}\n\nexport interface IDatePickerOutputDefaultEvent {\n    type: 'default';\n    data: 'init' | 'opened' | 'closed';\n}\n\nexport interface IDatePickerOutputChangedEvent {\n    type: 'dateChanged';\n    data: DateTime;\n}\n\nexport interface IDatePickerOutputInvalidEvent {\n    type: 'dateInvalid';\n    data: string;\n}\n\nexport interface IDatePickerOutputClearedEvent {\n    type: 'dateCleared';\n    data: string;\n}\n\nexport class DatePickerOptions {\n    firstWeekdaySunday?: boolean;\n    format: string;\n    class?: string;\n\n    constructor(obj?: DatePickerOptions) {\n        this.firstWeekdaySunday = obj && obj.firstWeekdaySunday ? obj.firstWeekdaySunday : false;\n        this.format = obj && obj.format ? obj.format : fixedDateFormat;\n        this.class = obj && obj.class;\n    }\n}\n\nexport interface ICalendarDate {\n    day: number | null;\n    month: number | null;\n    year: number | null;\n    enabled: boolean;\n    today: boolean;\n    selected: boolean;\n    dateTime: DateTime;\n}\n\n@Component({\n    selector: 'nof-date-picker',\n    templateUrl: 'date-picker.component.html',\n    styleUrls: ['date-picker.component.css'],\n    standalone: false\n})\nexport class DatePickerComponent implements OnInit, OnDestroy {\n\n    @Input({required : true})\n    options: DatePickerOptions;\n\n    @Input({required : true})\n    inputEvents!: EventEmitter<IDatePickerInputEvent>;\n\n    @Output()\n    outputEvents: EventEmitter<IDatePickerOutputEvent>;\n\n    @Input({required : true})\n    id!: string;\n\n    @Input({required : true})\n    description!: string;\n\n    opened: boolean;\n    days: ICalendarDate[];\n\n    @ViewChild('inp', {static: false})\n    inputField?: ElementRef;\n\n    constructor() {\n        this.opened = false;\n        this.options = {format : fixedDateFormat};\n        this.days = [];\n        this.dateModelValue = null;\n\n        this.outputEvents = new EventEmitter<IDatePickerOutputEvent>();\n    }\n\n    private validInputFormats = supportedDateFormats.concat(fixedDateFormat);\n\n    private dateModelValue: DateTime | null;\n    private modelValue = '';\n\n    private bSubject?: BehaviorSubject<string>;\n    private sub?: ISubscription;\n\n    set model(s: string) {\n        this.modelValue = s;\n\n        if (this.bSubject) {\n            this.bSubject.next(s);\n        }\n    }\n\n    get model(): string {\n        return this.modelValue;\n    }\n\n    get currentDate(): DateTime {\n        return this.dateModelValue || DateTime.now();\n    }\n\n    set dateModel(date: DateTime | null) {\n        if (date) {\n            this.dateModelValue = date;\n            this.outputEvents.emit({ type: 'dateChanged', data: this.dateModel! });\n        } else {\n            this.dateModelValue = null;\n            this.outputEvents.emit({ type: 'dateCleared', data: '' });\n        }\n    }\n\n    get dateModel(): DateTime | null {\n        return this.dateModelValue;\n    }\n\n    private eventsSub?: ISubscription;\n\n    private validateDate(newValue: string) {\n        return validateDate(newValue, this.validInputFormats);\n    }\n\n    setDateIfChanged(newDate: DateTime) {\n        const currentDate = this.dateModel;\n        if (!currentDate || !newDate.equals(currentDate)) {\n            this.setValue(newDate);\n            setTimeout(() => this.model = this.formatDate());\n        }\n    }\n\n    inputChanged(newValue: string) {\n\n        const dt = this.validateDate(newValue);\n\n        if (dt && dt.isValid) {\n            this.setDateIfChanged(dt);\n        } else {\n            this.setValue(null);\n            if (newValue) {\n                this.outputEvents.emit({ type: 'dateInvalid', data: newValue });\n            }\n        }\n    }\n\n    ngOnInit() {\n        this.options = new DatePickerOptions(this.options);\n        const optionFormats = this.options.format ? [this.options.format] : [];\n        this.validInputFormats = concat(optionFormats, this.validInputFormats);\n\n        this.outputEvents.emit({ type: 'default', data: 'init' } as IDatePickerOutputDefaultEvent);\n\n        if (this.inputEvents) {\n            this.eventsSub = this.inputEvents.subscribe((e: IDatePickerInputEvent) => {\n                switch (e.type) {\n                    case 'action': {\n                        if (e.data === 'toggle') {\n                            this.toggle();\n                        }\n                        if (e.data === 'close') {\n                            this.close();\n                        }\n                        if (e.data === 'open') {\n                            this.open();\n                        }\n                        break;\n                    }\n                    case 'setDate': {\n                        const date = this.validateDate(e.data);\n                        if (date && date.isValid) {\n                            this.selectDate(date);\n                        } else {\n                            throw new Error(`Invalid date: ${e.data}`);\n                        }\n\n                        break;\n                    }\n                }\n            });\n        }\n    }\n\n    private isSame (dt1 : DateTime, dt2 : DateTime) {\n        return dt1.day === dt2.day && dt1.month === dt2.month && dt1.year === dt2.year;\n    }\n\n\n    generateCalendar() {\n    \n        const month = this.currentDate.month;\n        const year = this.currentDate.year;\n        let n = 1;\n        const firstdow = this.currentDate.startOf('month').weekday;\n        let firstWeekDay = firstdow + 1;\n\n        if (firstWeekDay === 8) {\n            firstWeekDay = 1;\n        }\n\n        if (firstWeekDay !== 1) {\n            n -= (firstWeekDay + 6) % 7;\n        }\n\n        this.days = [];\n\n        const endOfMonth = this.currentDate.endOf('month');\n        for (let i = n; i <= endOfMonth.day; i += 1) {\n            const date: DateTime = DateTime.local(year, month, i);\n            const today: boolean = this.isSame(DateTime.now(), date);\n            const selected: boolean = !!this.dateModel && this.isSame(this.dateModel, date);\n\n            const day: ICalendarDate = {\n                day: i > 0 ? i : null,\n                month: i > 0 ? month : null,\n                year: i > 0 ? year : null,\n                enabled: i > 0,\n                today: i > 0 && today,\n                selected: i > 0 && selected,\n                dateTime: date\n            };\n\n            this.days.push(day);\n        }\n    }\n\n    setValue(date: DateTime | null) {\n        this.dateModel = date;\n    }\n\n    private formatDate() {\n        return this.dateModel ? this.dateModel.toFormat(this.options.format) : '';\n    }\n\n    selectDate(date: DateTime | null, e?: MouseEvent, ) {\n        if (e) { e.preventDefault(); }\n        setTimeout(() => {\n            this.setValue(date);\n            this.model = this.formatDate();\n        });\n        this.opened = false;\n    }\n\n    writeValue(date: DateTime) {\n        if (!date) { return; }\n        this.dateModelValue = date;\n    }\n\n    prevMonth() {\n        const date = this.currentDate.minus({month :1});\n        this.setValue(date);\n        this.model = this.formatDate();\n        this.generateCalendar();\n    }\n\n    nextMonth() {\n        const date = this.currentDate.plus({month:1});\n        this.setValue(date);\n        this.model = this.formatDate();\n        this.generateCalendar();\n    }\n\n    prevYear() {\n        const date = this.currentDate.minus({year:1});\n        this.setValue(date);\n        this.model = this.formatDate();\n        this.generateCalendar();\n    }\n\n    nextYear() {\n        const date = this.currentDate.plus({year:1});\n        this.setValue(date);\n        this.model = this.formatDate();\n        this.generateCalendar();\n    }\n\n    today() {\n        this.selectDate(DateTime.now());\n    }\n\n    toggle() {\n        const change = this.opened ? this.close : this.open;\n        change();\n    }\n\n    private open = () => {\n        this.generateCalendar();\n        this.opened = true;\n        this.outputEvents.emit({ type: 'default', data: 'opened' } as IDatePickerOutputDefaultEvent);\n    };\n\n    private close = () => {\n        this.opened = false;\n        this.outputEvents.emit({ type: 'default', data: 'closed' } as IDatePickerOutputDefaultEvent);\n    };\n\n    clear() {\n        this.selectDate(null);\n        this.model = '';\n        this.close();\n    }\n\n    get subject() {\n        if (!this.bSubject) {\n            const initialValue = this.model;\n            this.bSubject = new BehaviorSubject(initialValue);\n\n            this.sub = this.bSubject\n                .pipe(debounceTime(1000)).subscribe((data: string) => this.inputChanged(data));\n        }\n\n        return this.bSubject;\n    }\n\n    classes(): Dictionary<boolean | null> {\n        return {\n            'datepicker-input': true,\n            [this.options.class ?? '']: !!(this.options && this.options.class)\n        };\n    }\n\n    ngOnDestroy(): void {\n        safeUnsubscribe(this.sub);\n        safeUnsubscribe(this.eventsSub);\n    }\n\n    focus() {\n        return focus(this.inputField);\n    }\n}\n","<div class=\"datepicker-container u-is-unselectable\">\n    <div class=\"datepicker-input-container\">\n        <input #inp type=\"text\" [ngClass]=\"classes()\" [id]=\"id\" [(ngModel)]=\"model\" [nofClear]=\"subject\" (clear)=\"clear()\" placeholder=\"{{description}}\">\n        <div class=\"datepicker-input-icon\" (click)=\"toggle()\">\n            <i>\n                <svg width=\"58px\" height=\"58px\" viewBox=\"0 0 58 58\" version=\"1.1\">\n                    <g id=\"calendar\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                        <g id=\"Group\" fill-rule=\"nonzero\" fill=\"#000000\">\n                            <path d=\"M42.899,4.5 C42.434,2.221 40.415,0.5 38,0.5 C37.447,0.5 37,0.947 37,1.5 C37,2.053 37.447,2.5 38,2.5 C39.654,2.5 41,3.846 41,5.5 C41,7.154 39.654,8.5 38,8.5 C37.447,8.5 37,8.947 37,9.5 C37,10.053 37.447,10.5 38,10.5 C40.414,10.5 42.434,8.779 42.899,6.5 L56,6.5 L56,15.5 L2,15.5 L2,6.5 L16,6.5 L19,6.5 C19.553,6.5 20,6.053 20,5.5 C20,4.947 19.553,4.5 19,4.5 L17.184,4.5 C17.598,3.338 18.698,2.5 20,2.5 C21.654,2.5 23,3.846 23,5.5 C23,7.154 21.654,8.5 20,8.5 C19.447,8.5 19,8.947 19,9.5 C19,10.053 19.447,10.5 20,10.5 C22.757,10.5 25,8.257 25,5.5 C25,2.743 22.757,0.5 20,0.5 C17.586,0.5 15.566,2.221 15.101,4.5 L0,4.5 L0,17.5 L0,57.5 L58,57.5 L58,17.5 L58,4.5 L42.899,4.5 Z M56,55.5 L2,55.5 L2,17.5 L56,17.5 L56,55.5 Z\" id=\"Shape\"></path>\n                            <path d=\"M26,2.5 C27.654,2.5 29,3.846 29,5.5 C29,7.154 27.654,8.5 26,8.5 C25.447,8.5 25,8.947 25,9.5 C25,10.053 25.447,10.5 26,10.5 C28.757,10.5 31,8.257 31,5.5 C31,2.743 28.757,0.5 26,0.5 C25.447,0.5 25,0.947 25,1.5 C25,2.053 25.447,2.5 26,2.5 Z\" id=\"Shape\"></path>\n                            <path d=\"M32,2.5 C33.654,2.5 35,3.846 35,5.5 C35,7.154 33.654,8.5 32,8.5 C31.447,8.5 31,8.947 31,9.5 C31,10.053 31.447,10.5 32,10.5 C34.757,10.5 37,8.257 37,5.5 C37,2.743 34.757,0.5 32,0.5 C31.447,0.5 31,0.947 31,1.5 C31,2.053 31.447,2.5 32,2.5 Z\" id=\"Shape\"></path>\n                            <circle id=\"Oval\" cx=\"22\" cy=\"24.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"29\" cy=\"24.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"36\" cy=\"24.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"43\" cy=\"24.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"50\" cy=\"24.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"8\" cy=\"32.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"15\" cy=\"32.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"22\" cy=\"32.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"29\" cy=\"32.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"36\" cy=\"32.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"43\" cy=\"32.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"50\" cy=\"32.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"8\" cy=\"39.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"15\" cy=\"39.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"22\" cy=\"39.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"29\" cy=\"39.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"36\" cy=\"39.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"43\" cy=\"39.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"50\" cy=\"39.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"8\" cy=\"47.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"15\" cy=\"47.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"22\" cy=\"47.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"29\" cy=\"47.5\" r=\"1\"></circle>\n                            <circle id=\"Oval\" cx=\"36\" cy=\"47.5\" r=\"1\"></circle>\n                        </g>\n                    </g>\n                </svg>\n            </i>\n        </div>\n    </div>\n    <div class=\"datepicker-calendar\" *ngIf=\"opened\">\n        <div class=\"datepicker-calendar-top\">\n            <i (click)=\"prevYear()\">\n                <svg class=\"prevYear\" width=\"190px\" height=\"306px\" viewBox=\"58 0 190 306\" version=\"1.1\">\n                    <g id=\"keyboard-left-arrow-button\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(58.000000, 0.000000)\">\n                        <g id=\"chevron-left\" fill-rule=\"nonzero\" fill=\"#000000\">\n                            <polygon id=\"Shape\" points=\"189.35 35.7 153.65 0 0.65 153 153.65 306 189.35 270.3 72.05 153\"></polygon>\n                        </g>\n                    </g>\n                </svg>\n            </i>\n            <span class=\"year-title\">{{ currentDate.toFormat('yyyy') }}</span>\n            <i (click)=\"nextYear()\">\n                <svg class = \"nextYear\" width=\"190px\" height=\"306px\" viewBox=\"58 0 190 306\" version=\"1.1\">\n                    <g id=\"keyboard-right-arrow-button\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(58.000000, 0.000000)\">\n                        <g id=\"chevron-right\" fill-rule=\"nonzero\" fill=\"#000000\">\n                            <polygon id=\"Shape\" points=\"36.35 0 0.65 35.7 117.95 153 0.65 270.3 36.35 306 189.35 153\"></polygon>\n                        </g>\n                    </g>\n                </svg>\n            </i>\n        </div>\n        <div class=\"datepicker-calendar-container\">\n            <div>\n                <div class=\"datepicker-calendar-month-section\">\n                    <i (click)=\"prevMonth()\">\n                        <svg width=\"190px\" height=\"306px\" viewBox=\"58 0 190 306\" version=\"1.1\">\n                            <g id=\"keyboard-left-arrow-button\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(58.000000, 0.000000)\">\n                                <g id=\"chevron-left\" fill-rule=\"nonzero\" fill=\"#000000\">\n                                    <polygon id=\"Shape\" points=\"189.35 35.7 153.65 0 0.65 153 153.65 306 189.35 270.3 72.05 153\"></polygon>\n                                </g>\n                            </g>\n                        </svg>\n                    </i>\n                    <span class=\"month-title\">{{ currentDate.toFormat('MMMM') }}</span>\n                    <i (click)=\"nextMonth()\">\n                        <svg width=\"190px\" height=\"306px\" viewBox=\"58 0 190 306\" version=\"1.1\">\n                            <g id=\"keyboard-right-arrow-button\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(58.000000, 0.000000)\">\n                                <g id=\"chevron-right\" fill-rule=\"nonzero\" fill=\"#000000\">\n                                    <polygon id=\"Shape\" points=\"36.35 0 0.65 35.7 117.95 153 0.65 270.3 36.35 306 189.35 153\"></polygon>\n                                </g>\n                            </g>\n                        </svg>\n                    </i>\n                </div>\n                <div class=\"datepicker-calendar-day-names\">\n                    <span>S</span>\n                    <span>M</span>\n                    <span>T</span>\n                    <span>W</span>\n                    <span>T</span>\n                    <span>F</span>\n                    <span>S</span>\n                </div>\n                <div class=\"datepicker-calendar-days-container\">\n                    <span class=\"day\" *ngFor=\"let d of days; let i = index\" (click)=\"selectDate(d.dateTime, $event)\" [ngClass]=\"{ 'disabled': !d.enabled, 'today': d.today, 'selected': d.selected }\">\n                        {{ d.day }}\n                    </span>\n                </div>\n                <div class=\"datepicker-buttons\">\n                    <button type=\"button\" class=\"a-button u-is-secondary u-is-small\" (click)=\"clear()\" value=\"Clear\">Clear</button>\n                    <button type=\"button\" class=\"a-button u-is-primary u-is-small\" (click)=\"today()\" value=\"Today\">Today</button>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>","import { AfterViewInit, ViewChild } from '@angular/core';\nimport { Component, EventEmitter, Input } from '@angular/core';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport { ConfigService } from '@nakedobjects/services';\nimport { FieldViewModel, PropertyViewModel } from '@nakedobjects/view-models';\nimport { DateTime } from 'luxon';\nimport { DatePickerComponent, DatePickerOptions } from '../date-picker/date-picker.component';\nimport { IDatePickerInputEvent, IDatePickerOutputEvent } from '../date-picker/date-picker.component';\nimport { fixedDateFormat } from '@nakedobjects/services';\n\n@Component({\n    selector: 'nof-date-picker-facade',\n    templateUrl: 'date-picker-facade.component.html',\n    styleUrls: ['date-picker-facade.component.css'],\n    standalone: false\n})\nexport class DatePickerFacadeComponent implements AfterViewInit {\n\n    datePickerOptions = new DatePickerOptions();\n\n    constructor(configService: ConfigService) {\n        this.inputEvents = new EventEmitter<IDatePickerInputEvent>();\n        this.datePickerOptions.format = configService.config.dateInputFormat;\n    }\n\n    @Input({required: true})\n    control!: AbstractControl;\n\n    @Input({required: true})\n    form!: FormGroup;\n\n    private fieldViewModel!: FieldViewModel;\n\n    @Input({required: true})\n    set model(m: FieldViewModel) {\n        this.fieldViewModel = m;\n        this.datePickerOptions.class = m instanceof PropertyViewModel ? 'datepicker-property' : 'datepicker-parameter';\n    }\n\n    get model(): FieldViewModel {\n        return this.fieldViewModel;\n    }\n\n    @ViewChild('dp', {static: false})\n    datepicker?: DatePickerComponent;\n\n    inputEvents: EventEmitter<IDatePickerInputEvent>;\n\n    get id() {\n        return this.model.paneArgId;\n    }\n\n    get description() {\n        return this.model.description;\n    }\n\n    setValueIfChanged(dateModel: DateTime | null) {\n        const oldValue = this.control.value;\n        const newValue = dateModel ? dateModel.toFormat(fixedDateFormat) : '';\n\n        if (newValue !== oldValue) {\n            this.model.resetMessage();\n            this.model.clientValid = true;\n            this.control.setValue(newValue);\n        }\n    }\n\n    handleDefaultEvent(data: string) {\n        if (this.control) {\n            if (data === 'closed') {\n                const dateModel = this.datepicker?.dateModel ?? null;\n                this.setValueIfChanged(dateModel);\n            }\n        }\n    }\n\n    handleDateChangedEvent(dateModel: DateTime) {\n        if (this.control) {\n            this.setValueIfChanged(dateModel);\n        }\n    }\n\n    handleDateClearedEvent() {\n        if (this.control) {\n            this.model.resetMessage();\n            this.model.clientValid = true;\n            this.control.setValue('');\n        }\n    }\n\n    handleInvalidDateEvent(_: string) {\n        if (this.control) {\n            this.model.setInvalidDate();\n            this.model.clientValid = false;\n            this.control.setErrors({ [this.model.getMessage()]: true });\n        }\n    }\n\n    handleEvents(e: IDatePickerOutputEvent) {\n        switch (e.type) {\n            case ('default'):\n                this.handleDefaultEvent(e.data);\n                break;\n            case ('dateChanged'):\n                this.handleDateChangedEvent(e.data);\n                break;\n            case ('dateCleared'):\n                this.handleDateClearedEvent();\n                break;\n            case ('dateInvalid'):\n                this.handleInvalidDateEvent(e.data);\n                break;\n\n            default: // ignore\n        }\n    }\n\n    ngAfterViewInit(): void {\n        const existingValue = this.control && this.control.value;\n        if (existingValue && (existingValue instanceof String || typeof existingValue === 'string')) {\n            setTimeout(() => this.inputEvents.emit({ type: 'setDate', data: existingValue as string, }));\n        }\n    }\n\n    focus() {\n        return this.datepicker?.focus();\n    }\n}\n","<div [formGroup]=\"form\">\n    <nof-date-picker #dp [id]=\"id\" [inputEvents]=\"inputEvents\" (outputEvents)=\"handleEvents($event)\"  [options]=\"datePickerOptions\" [description]=\"description\"></nof-date-picker >\n</div>                   ","import { CdkDrag, CdkDragDrop, CdkDropList } from '@angular/cdk/drag-drop';\nimport { Component, ElementRef, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport { ChoiceViewModel, DragAndDropService, FieldViewModel, IDraggableViewModel } from '@nakedobjects/view-models';\nimport { Dictionary } from 'lodash';\nimport { BehaviorSubject, SubscriptionLike as ISubscription } from 'rxjs';\nimport { accept, dropOn, focus, paste, safeUnsubscribe } from '../helpers-components';\n\n@Component({\n    selector: 'nof-auto-complete',\n    templateUrl: 'auto-complete.component.html',\n    styleUrls: ['auto-complete.component.css'],\n    standalone: false\n})\nexport class AutoCompleteComponent implements OnDestroy {\n\n    constructor(\n        private readonly dragAndDrop: DragAndDropService\n    ) { }\n\n    private fieldViewModel!: FieldViewModel;\n    private bSubject?: BehaviorSubject<unknown>;\n    private sub?: ISubscription;\n    private currentIndex = -1;\n\n    @ViewChild('focus', {static: false})\n    inputField?: ElementRef;\n    \n    canDrop = false;\n    dragOver = false;\n\n    @Input({required : true})\n    set model(m: FieldViewModel) {\n        this.fieldViewModel = m;\n        this.dragAndDrop.setDropZoneId(this.modelPaneId);\n    }\n\n    get model() {\n        return this.fieldViewModel;\n    }\n\n    @Input({required : true})\n    form!: FormGroup;\n\n\n    get modelPaneId() {\n        return this.model.paneArgId;\n    }\n\n    get modelId() {\n        return this.model.id;\n    }\n\n    get control(): AbstractControl {\n        return this.form.controls[this.model.id];\n    }\n\n    get choices(): ChoiceViewModel[] {\n        return this.model.choices;\n    }\n\n    get accept() {\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        const _this = this;\n        return (cdkDrag: CdkDrag<IDraggableViewModel>, _cdkDropList: CdkDropList) => {\n            return accept(_this.model, _this, cdkDrag.data);\n        };\n    }\n\n    drop(event: CdkDragDrop<CdkDrag<IDraggableViewModel>>) {\n        const cdkDrag: CdkDrag<IDraggableViewModel> = event.item;\n        if (event.isPointerOverContainer) {\n            dropOn(cdkDrag.data, this.model, this);\n        }\n        this.canDrop = false;\n        this.dragOver = false;\n    }\n\n    exit() {\n        this.canDrop = false;\n        this.dragOver = false;\n    }\n\n    enter() {\n        this.dragOver = true;\n    }\n\n    classes(): Dictionary<boolean | null> {\n        return {\n            [this.model.color]: true,\n            'candrop': this.canDrop,\n            'dnd-drag-over': this.dragOver,\n        };\n    }\n\n    get description() {\n        return this.model.description;\n    }\n\n    paste(event: KeyboardEvent) {\n        paste(event, this.model, this, () => this.dragAndDrop.getCopyViewModel(), () => this.dragAndDrop.setCopyViewModel(null));\n    }\n\n    clear() {\n        this.model.clear();\n        this.control.reset();\n    }\n\n    select(item: ChoiceViewModel) {\n        this.model.choices = [];\n        this.model.selectedChoice = item;\n        this.control.reset(item);\n    }\n\n    choiceName = (choice: ChoiceViewModel) => choice.name;\n\n    get subject() {\n        if (!this.bSubject) {\n            const initialValue = this.control.value;\n            this.bSubject = new BehaviorSubject(initialValue);\n\n            this.sub = this.control.valueChanges.subscribe((data) => {\n                this.bSubject!.next(data);\n                this.currentIndex = -1;\n            });\n        }\n\n        return this.bSubject;\n    }\n\n    isSelected(i: number) {\n        return { 'selected': i === this.currentIndex };\n    }\n\n    onArrowUp() {\n        this.currentIndex--;\n        this.currentIndex = this.currentIndex < -1 ? -1 : this.currentIndex;\n        return false;\n    }\n\n    onArrowDown() {\n        this.currentIndex++;\n        const maxIndex = this.choices.length - 1;\n        this.currentIndex = this.currentIndex > maxIndex ? maxIndex : this.currentIndex;\n        return false;\n    }\n\n    selectCurrent() {\n        const maxIndex = this.choices.length - 1;\n        if (this.currentIndex >= 0 && this.currentIndex <= maxIndex) {\n            this.select(this.choices[this.currentIndex]);\n            return false;\n        }\n        return true;\n    }\n\n    ngOnDestroy(): void {\n        this.dragAndDrop.clearDropZoneId(this.modelPaneId);\n        safeUnsubscribe(this.sub);\n    }\n\n    focus() {\n        return focus(this.inputField);\n    }\n}\n","<div [formGroup]=\"form\">\n    <input\n        #focus\n        [id]=\"modelPaneId\"\n        class=\"value droppable\"\n        cdkDropList\n        (cdkDropListDropped)=\"drop($event)\"\n        (cdkDropListExited)=\"exit()\"\n        (cdkDropListEntered)=\"enter()\"\n        [cdkDropListEnterPredicate]=\"accept\"\n        [ngClass]=\"classes()\"\n        placeholder=\"{{description}}\"\n        type=\"text\"\n        [formControlName]=\"modelId\"\n        [nofClear]=\"subject\"\n        (clear)=\"clear()\"\n        (keydown.arrowup)=\"onArrowUp()\"\n        (keydown.arrowdown)=\"onArrowDown()\"\n        (keyup.enter)=\"selectCurrent()\"/>\n    <div class=\"suggestions\" *ngIf=\"choices.length > 0\">\n        <ul >\n            <li [ngClass]=\"isSelected(i)\" *ngFor=\"let choice of choices; let i = index\">\n                <a (click)=\"select(choice)\">{{choiceName(choice)}}</a>\n            </li>\n        </ul>\n    </div>\n</div>","import {\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewChild\n} from '@angular/core';\nimport { DateTime } from 'luxon';\nimport { debounceTime } from 'rxjs/operators';\nimport { focus, safeUnsubscribe } from '../helpers-components';\nimport { BehaviorSubject, SubscriptionLike as ISubscription } from 'rxjs';\nimport { defaultShortTimeFormat, defaultTimeFormat, shortTimeFormat } from '@nakedobjects/services';\n\nexport interface ITimePickerOutputEvent {\n    type: 'timeChanged' | 'timeCleared' | 'timeInvalid';\n    data: string;\n}\n\nexport interface ITimePickerInputEvent {\n    type: 'setTime';\n    data: string;\n}\n\n@Component({\n    selector: 'nof-time-picker',\n    templateUrl: 'time-picker.component.html',\n    styleUrls: ['time-picker.component.css'],\n    standalone: false\n})\nexport class TimePickerComponent implements OnInit, OnDestroy {\n\n    @Input({required : true})\n    inputEvents!: EventEmitter<ITimePickerInputEvent>;\n\n    @Output()\n    outputEvents: EventEmitter<ITimePickerOutputEvent>;\n\n    @Input({required : true})\n    id!: string;\n\n    @ViewChild('focus', {static: false})\n    inputField?: ElementRef;\n\n    constructor() {\n        this.outputEvents = new EventEmitter<ITimePickerOutputEvent>();\n    }\n\n    private timeValue: DateTime | null = null;\n    private modelValue = '';\n    private eventsSub?: ISubscription;\n    private bSubject?: BehaviorSubject<string>;\n    private sub?: ISubscription;\n\n    set model(s: string) {\n        this.modelValue = s;\n\n        if (this.bSubject) {\n            this.bSubject.next(s);\n        }\n    }\n\n    get model(): string {\n        return this.modelValue;\n    }\n\n    get time(): DateTime | null {\n        return this.timeValue;\n    }\n\n    set time(time: DateTime | null) {\n        if (time && time.isValid) {\n            this.timeValue = time;\n            this.outputEvents.emit({ type: 'timeChanged', data: time.toFormat(defaultTimeFormat) });\n        }\n    }\n\n    private validInputFormats = [defaultTimeFormat, defaultShortTimeFormat, shortTimeFormat];\n\n    private validateTime(newValue: string) {\n        let dt : DateTime<true> | DateTime<false> = DateTime.now();\n\n        for (const f of this.validInputFormats) {\n            dt = DateTime.fromFormat(newValue, f);\n            if (dt.isValid) {\n                break;\n            }\n        }\n\n        return dt;\n    }\n\n    private sameTime(t1 : DateTime, t2 : DateTime | null) {\n        return t2 &&\n               t1.hour === t2.hour &&\n               t1.minute === t2.minute &&\n               t1.second === t2.second;\n    }\n\n    setTimeIfChanged(newTime: DateTime) {\n        if (!this.sameTime(newTime, this.time)) {\n            this.time = newTime;\n            setTimeout(() => this.model = newTime.toFormat(defaultShortTimeFormat));\n        }\n    }\n\n    setTime(newValue: string) {\n\n        if (newValue === '' || newValue == null) {\n            this.timeValue = null;\n            this.outputEvents.emit({ type: 'timeCleared', data: '' });\n        } else {\n            const dt = this.validateTime(newValue);\n\n            if (dt.isValid) {\n                this.setTimeIfChanged(dt);\n            } else {\n                this.timeValue = null;\n                this.outputEvents.emit({ type: 'timeInvalid', data: newValue });\n            }\n        }\n    }\n\n    inputChanged(newValue: string) {\n        this.setTime(newValue);\n    }\n\n    ngOnInit() {\n\n        if (this.inputEvents) {\n            this.eventsSub = this.inputEvents.subscribe((e: ITimePickerInputEvent) => {\n                if (e.type === 'setTime') {\n                    this.setTime(e.data);\n                }\n            });\n        }\n    }\n\n    clear() {\n        this.modelValue = '';\n        this.setTime('');\n    }\n\n    get subject() {\n        if (!this.bSubject) {\n            const initialValue = this.model;\n            this.bSubject = new BehaviorSubject(initialValue);\n\n            this.sub = this.bSubject.pipe(debounceTime(200)).subscribe((data: string) => this.inputChanged(data));\n        }\n\n        return this.bSubject;\n    }\n\n    ngOnDestroy(): void {\n        safeUnsubscribe(this.sub);\n        safeUnsubscribe(this.eventsSub);\n    }\n\n    focus() {\n        return focus(this.inputField);\n    }\n}\n","<input #focus type=\"text\" [id]=\"id\" [(ngModel)]=\"model\" [nofClear]=\"subject\" (clear)=\"clear()\">\n","import { AfterViewInit, Component, EventEmitter, Input, ViewChild } from '@angular/core';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport { FieldViewModel } from '@nakedobjects/view-models';\nimport { TimePickerComponent } from '../time-picker/time-picker.component';\nimport { ITimePickerInputEvent, ITimePickerOutputEvent } from '../time-picker/time-picker.component';\n\n@Component({\n    selector: 'nof-time-picker-facade',\n    templateUrl: 'time-picker-facade.component.html',\n    styleUrls: ['time-picker-facade.component.css'],\n    standalone: false\n})\nexport class TimePickerFacadeComponent implements AfterViewInit {\n\n    constructor() {\n        this.inputEvents = new EventEmitter<ITimePickerInputEvent>();\n    }\n\n    @Input({required : true})\n    control!: AbstractControl;\n\n    @Input({required : true})\n    form!: FormGroup;\n\n    @Input({required : true})\n    model!: FieldViewModel;\n\n    @ViewChild('tp', {static : false})\n    timepicker?: TimePickerComponent;\n\n    inputEvents: EventEmitter<ITimePickerInputEvent>;\n\n    get id() {\n        return this.model.paneArgId;\n    }\n\n    setValueIfChanged(time: string) {\n        const oldValue = this.control.value;\n        const newValue = time ? time : '';\n\n        if (newValue !== oldValue) {\n            this.model.resetMessage();\n            this.model.clientValid = true;\n            this.control.setValue(newValue);\n        }\n    }\n\n    handleTimeChangedEvent(time: string) {\n        if (this.control) {\n            this.setValueIfChanged(time);\n        }\n    }\n\n    handleTimeClearedEvent() {\n        if (this.control) {\n            this.model.resetMessage();\n            this.model.clientValid = true;\n            this.control.setValue('');\n        }\n    }\n\n    handleInvalidTimeEvent() {\n        if (this.control) {\n            this.control.setValue('');\n            this.model.setInvalidTime();\n            this.model.clientValid = false;\n            this.control.setErrors({ [this.model.getMessage()]: true });\n        }\n    }\n\n    handleEvents(e: ITimePickerOutputEvent) {\n        switch (e.type) {\n            case ('timeChanged'):\n                this.handleTimeChangedEvent(e.data);\n                break;\n            case ('timeInvalid'):\n                this.handleInvalidTimeEvent();\n                break;\n            case ('timeCleared'):\n                this.handleTimeClearedEvent();\n                break;\n            default: // ignore\n        }\n    }\n\n    ngAfterViewInit(): void {\n        const existingValue = this.control && this.control.value;\n        if (existingValue && (existingValue instanceof String || typeof existingValue === 'string')) {\n            setTimeout(() => this.inputEvents.emit({ type: 'setTime', data: existingValue as string }));\n        }\n    }\n\n    focus() {\n        return this.timepicker && this.timepicker.focus();\n    }\n}\n","<div [formGroup]=\"form\">\n    <nof-time-picker #tp [id]=\"id\" [inputEvents]=\"inputEvents\" (outputEvents)=\"handleEvents($event)\"  ></nof-time-picker >\n</div>      \n","import {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    HostListener,\n    Input,\n    OnInit,\n    QueryList,\n    Renderer2,\n    ViewChildren,\n    OnDestroy\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport * as Ro from '@nakedobjects/restful-objects';\nimport { LoggerService } from '@nakedobjects/services';\nimport { ChoiceViewModel, DialogViewModel, DomainObjectViewModel, DragAndDropService, MenuViewModel, ParameterViewModel } from '@nakedobjects/view-models';\nimport { Dictionary } from 'lodash';\nimport { AutoCompleteComponent } from '../auto-complete/auto-complete.component';\nimport { DatePickerFacadeComponent } from '../date-picker-facade/date-picker-facade.component';\nimport { FieldComponent } from '../field/field.component';\nimport { TimePickerFacadeComponent } from '../time-picker-facade/time-picker-facade.component';\n\n@Component({\n    selector: 'nof-edit-parameter',\n    templateUrl: 'edit-parameter.component.html',\n    styleUrls: ['edit-parameter.component.css'],\n    standalone: false\n})\nexport class EditParameterComponent extends FieldComponent implements OnInit, OnDestroy, AfterViewInit {\n\n    constructor(\n        loggerService: LoggerService,\n        renderer: Renderer2,\n        dragAndDrop: DragAndDropService\n    ) {\n        super(loggerService, renderer, dragAndDrop);\n    }\n\n    parm!: ParameterViewModel;\n\n    @ViewChildren('focus')\n    focusList?: QueryList<ElementRef | DatePickerFacadeComponent | TimePickerFacadeComponent | AutoCompleteComponent>;\n\n    @ViewChildren('checkbox')\n    checkboxList?: QueryList<ElementRef>;\n\n    @Input({required : true})\n    parent!: DialogViewModel | MenuViewModel | DomainObjectViewModel;\n\n    @Input({required : true})\n    set parameter(value: ParameterViewModel) {\n        this.parm = value;\n        if (this.parameterEntryType === Ro.EntryType.FreeForm) {\n            this.dragAndDrop.setDropZoneId(this.parameterPaneId);\n        }\n    }\n\n    get parameter() {\n        return this.parm;\n    }\n\n    get parameterPaneId() {\n        return this.parameter.paneArgId;\n    }\n\n    get title() {\n        return this.parameter.title;\n    }\n\n    get parameterType() {\n        return this.parameter.type;\n    }\n\n    get parameterEntryType() {\n        return this.parameter.entryType;\n    }\n\n    get parameterReturnType() {\n        return this.parameter.returnType;\n    }\n\n    get format() {\n        return this.parameter.format;\n    }\n\n    get description() {\n        return this.parameter.description;\n    }\n\n    get parameterId() {\n        return this.parameter.id;\n    }\n\n    get choices() {\n        return this.parameter.choices;\n    }\n\n    get isMultiline() {\n        return !(this.parameter.multipleLines === 1);\n    }\n\n    get isPassword() {\n        return this.parameter.password;\n    }\n\n    get multilineHeight() {\n        return `${this.parameter.multipleLines * 20}px`;\n    }\n\n    get rows() {\n        return this.parameter.multipleLines;\n    }\n\n    get isEditable() {\n        return this.parameter.isEditable;\n    }\n\n    get formattedValue() {\n        return this.parameter.formattedValue;\n    }\n\n    choiceName = (choice: ChoiceViewModel) => choice.name;\n\n    classes(): Dictionary<boolean | null> {\n        return {\n            [this.parm.color]: true,\n            'candrop': this.canDrop,\n            'dnd-drag-over': this.dragOver,\n        };\n    }\n\n    @Input({required: true})\n    set form(fm: FormGroup) {\n        this.formGroup = fm;\n    }\n\n    get form() {\n        return this.formGroup;\n    }\n\n    ngOnInit(): void {\n        super.init(this.parent, this.parameter, this.form.controls[this.parm.id]);\n    }\n\n    isChoices() {\n        return this.parm.entryType === Ro.EntryType.Choices ||\n            this.parm.entryType === Ro.EntryType.ConditionalChoices ||\n            this.parm.entryType === Ro.EntryType.MultipleChoices ||\n            this.parm.entryType === Ro.EntryType.MultipleConditionalChoices;\n    }\n\n    isMultiple() {\n        return this.parm.entryType === Ro.EntryType.MultipleChoices ||\n            this.parm.entryType === Ro.EntryType.MultipleConditionalChoices;\n    }\n\n    @HostListener('keydown', ['$event'])\n    onKeydown(event: KeyboardEvent) {\n        this.handleKeyEvents(event, this.isMultiline);\n    }\n\n    @HostListener('keypress', ['$event'])\n    onKeypress(event: KeyboardEvent) {\n        this.handleKeyEvents(event, this.isMultiline);\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: KeyboardEvent) {\n        this.handleClick(event);\n    }\n\n    ngAfterViewInit() {\n        this.populateBoolean();\n    }\n\n    override ngOnDestroy(): void {\n        this.dragAndDrop.clearDropZoneId(this.parameterPaneId);\n        super.ngOnDestroy();\n    }\n}\n","<div class=\"name\">\n    <label attr.for=\"{{parameterPaneId}}\">{{title}}</label>\n</div>\n<div [formGroup]=\"form\">\n    <ng-container *ngIf=\"parameterType === 'ref'\">\n\n        <div *ngIf=\"!isEditable\" class=\"value\" [ngClass]=\"classes()\">\n            {{formattedValue}}\n        </div>\n\n        <div *ngIf=\"isEditable\" class=\"value input-control text\">\n            <!--\"EntryType.AutoComplete\"-->\n            <ng-container *ngIf=\"parameterEntryType === 5\">\n                <nof-auto-complete #focus [form]=\"form\" [model]=\"parameter\"></nof-auto-complete>\n            </ng-container>\n\n            <ng-container *ngIf=\"isChoices() && !isMultiple()\">\n                <select #focus [id]=\"parameterPaneId\" [formControlName]=\"parameterId\">\n                    <option *ngFor=\"let choice of choices\" [label]=\"choiceName(choice)\" [ngValue]=\"choice\">{{choiceName(choice)}}</option>\n                </select>\n            </ng-container>\n\n            <ng-container *ngIf=\"isChoices() && isMultiple()\">\n                <select #focus [id]=\"parameterPaneId\" multiple [formControlName]=\"parameterId\">\n                    <option *ngFor=\"let choice of choices\" [label]=\"choiceName(choice)\" [ngValue]=\"choice\">{{choiceName(choice)}}</option>\n                </select>\n            </ng-container>\n\n            <!--\"EntryType.FreeForm\"-->\n            <ng-container *ngIf=\"parameterEntryType === 0\">\n                <input\n                    #focus\n                    [id]=\"parameterPaneId\"\n                    class=\"value droppable\"\n                    cdkDropList\n                    (cdkDropListDropped)=\"drop($event)\"\n                    (cdkDropListExited)=\"exit()\"\n                    (cdkDropListEntered)=\"enter()\"\n                    [cdkDropListEnterPredicate]=\"accept\"\n                    [ngClass]=\"classes()\"\n                    placeholder=\"{{description}}\"\n                    type=\"text\"\n                    [formControlName]=\"parameterId\"\n                    [nofClear]=\"subject\"\n                    (clear)=\"clear()\"/>\n            </ng-container>\n\n        </div>\n    </ng-container>\n\n    <ng-container *ngIf=\"parameterType === 'scalar'\">\n\n        <ng-container *ngIf=\"!isEditable\"> \n            <ng-container [ngSwitch]=\"parameterReturnType\">\n                <ng-container *ngSwitchCase=\"'string'\">\n                    <ng-container>\n                        <div *ngIf=\"!isMultiline\" class=\"value\">\n                            {{formattedValue}}\n                        </div>\n                        <div *ngIf=\"isMultiline\" class=\"value multiline\" [ngStyle]=\"{height : multilineHeight}\">\n                            <pre>{{formattedValue}}</pre>\n                        </div>\n                    </ng-container>\n                </ng-container>\n\n                <ng-container *ngSwitchCase=\"'boolean'\">\n                    <input type=\"checkbox\"  [checked]=\"formattedValue\" disabled=\"disabled\" />\n                </ng-container>\n\n                <ng-container *ngSwitchDefault>\n                    <div class=\"value\">\n                        {{formattedValue}}\n                    </div>\n                </ng-container>\n            </ng-container>\n        </ng-container>\n\n        <div *ngIf=\"isEditable\" class=\"value input-control text\">\n\n            <!--\"EntryType.File\"-->\n            <ng-container *ngIf=\"parameterEntryType === 6\">\n                <input #focus [id]=\"parameterPaneId\" type=\"file\" placeholder=\"{{description}}\" (change)=\"fileUpload($event)\" />\n            </ng-container>\n\n            <!--\"EntryType.AutoComplete\"-->\n            <ng-container *ngIf=\"parameterEntryType === 5\">\n                <nof-auto-complete #focus [form]=\"form\" [model]=\"parameter\"></nof-auto-complete>\n            </ng-container>\n\n            <ng-container *ngIf=\"isChoices() && !isMultiple()\">\n                <select #focus [id]=\"parameterPaneId\" [formControlName]=\"parameterId\">\n                    <option *ngFor=\"let choice of choices\" [label]=\"choiceName(choice)\" [ngValue]=\"choice\">{{choiceName(choice)}}</option>\n                </select>\n            </ng-container>\n\n            <ng-container *ngIf=\"isChoices() && isMultiple()\">\n                <select #focus [id]=\"parameterPaneId\" multiple [formControlName]=\"parameterId\">\n                    <option *ngFor=\"let choice of choices\" [label]=\"choiceName(choice)\" [ngValue]=\"choice\">{{choiceName(choice)}}</option>\n                </select>\n            </ng-container>\n\n            <!--\"EntryType.FreeForm\"-->\n            <ng-container *ngIf=\"parameterEntryType === 0\">\n                <ng-container [ngSwitch]=\"parameterReturnType\">\n                    <ng-container *ngSwitchCase=\"'string'\" [ngSwitch]=\"format\">\n                        <ng-container *ngSwitchCase=\"'date'\">\n                            <nof-date-picker-facade #focus [control]=\"control\" [form]=\"form\" [model]=\"parameter\"></nof-date-picker-facade>\n                        </ng-container>\n                        <ng-container *ngSwitchCase=\"'time'\">\n                            <nof-time-picker-facade #focus [control]=\"control\" [form]=\"form\" [model]=\"parameter\"></nof-time-picker-facade>\n                        </ng-container>\n                        <ng-container *ngSwitchDefault>\n                            <input #focus *ngIf=\"!isMultiline\" [id]=\"parameterPaneId\" placeholder=\"{{description}}\"\n                                   type=\"{{isPassword ? 'password' : 'text'}}\" [formControlName]=\"parameterId\" [nofClear]=\"subject\" (clear)=\"clear()\" />\n                            <textarea #focus *ngIf=\"isMultiline\" rows=\"{{rows}}\" [id]=\"parameterPaneId\" [formControlName]=\"parameterId\"\n                                      placeholder=\"{{description}}\"></textarea>\n                        </ng-container>\n                    </ng-container>\n                    <ng-container *ngSwitchCase=\"'boolean'\">\n                        <input #focus #checkbox [id]=\"parameterPaneId\" type=\"checkbox\" [formControlName]=\"parameterId\" />{{description}}\n                    </ng-container>\n                    <ng-container *ngSwitchDefault>\n                        <input #focus [id]=\"parameterPaneId\" type=\"text\" placeholder=\"{{description}}\" [formControlName]=\"parameterId\" [nofClear]=\"subject\" (clear)=\"clear()\" />\n                    </ng-container>\n                </ng-container>\n            </ng-container>\n        </div>\n    </ng-container>\n</div>\n<div class=\"validation\">{{message}}</div>","import { Component, Input } from '@angular/core';\nimport { DialogViewModel, ParameterViewModel } from '@nakedobjects/view-models';\n\n@Component({\n    selector: 'nof-view-parameter',\n    templateUrl: 'view-parameter.component.html',\n    styleUrls: ['view-parameter.component.css'],\n    standalone: false\n})\nexport class ViewParameterComponent {\n\n    @Input({required : true})\n    parent!: DialogViewModel;\n\n    @Input({required : true})\n    parameter!: ParameterViewModel;\n\n    get title() {\n        return this.parameter.title;\n    }\n\n    get parameterPaneId() {\n        return this.parameter.paneArgId;\n    }\n\n    get parameterType() {\n        return this.parameter.type;\n    }\n\n    get parameterReturnType() {\n        return this.parameter.returnType;\n    }\n\n    get formattedValue() {\n        return this.parameter.formattedValue;\n    }\n\n    get value() {\n        return this.parameter.value;\n    }\n\n    get format() {\n        return this.parameter.format;\n    }\n\n    get isMultiline() {\n        return !(this.parameter.multipleLines === 1);\n    }\n\n    get multilineHeight() {\n        return `${this.parameter.multipleLines * 20}px`;\n    }\n\n    get color() {\n        return this.parameter.color;\n    }\n}\n","<div class=\"name\">\n    <label attr.for=\"{{parameterPaneId}}\">{{title}}</label>\n</div>\n\n<ng-container *ngIf=\"parameterType === 'ref'\">\n    <div class=\"value\">{{formattedValue}}</div>\n</ng-container>\n\n<ng-container *ngIf=\"parameterType === 'scalar'\" >\n    <ng-container [ngSwitch]=\"parameterReturnType\">\n        <ng-container *ngSwitchCase=\"'string'\">\n            <div *ngIf=\"!isMultiline\" class=\"value\">\n                {{formattedValue}}\n            </div>\n            <div *ngIf=\"isMultiline\" class=\"value multiline\" [ngStyle]=\"{height : multilineHeight}\">\n                <pre>{{formattedValue}}</pre>\n            </div>\n        </ng-container>\n\n        <ng-container *ngSwitchCase=\"'boolean'\">\n            <input type=\"checkbox\" [checked]=\"value\" disabled=\"disabled\" />\n        </ng-container>\n\n        <ng-container *ngSwitchDefault>\n            <div class=\"value\">{{formattedValue}}</div>\n        </ng-container>\n    </ng-container>\n</ng-container>\n\n\n\n\n","import { Component, Input, QueryList, ViewChildren } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { DialogViewModel, ParameterViewModel } from '@nakedobjects/view-models';\nimport some from 'lodash-es/some';\nimport { EditParameterComponent } from '../edit-parameter/edit-parameter.component';\n\n@Component({\n    selector: 'nof-parameters',\n    templateUrl: 'parameters.component.html',\n    styleUrls: ['parameters.component.css'],\n    standalone: false\n})\nexport class ParametersComponent {\n\n    @Input({required : true})\n    parent!: DialogViewModel;\n\n    @Input()\n    form?: FormGroup;\n\n    @Input({required : true})\n    parameters!: ParameterViewModel[];\n\n    @ViewChildren(EditParameterComponent)\n    parmComponents?: QueryList<EditParameterComponent>;\n\n    private hasHint(parm: ParameterViewModel) {\n        return parm?.presentationHint !== null && parm.presentationHint !== undefined;\n    }\n\n    classes = (parm: ParameterViewModel) => ({ parameter: true, multilinedialog: this.parent.isMultiLineDialogRow, [parm.presentationHint]: this.hasHint(parm)});\n\n    focus() {\n        const parms = this.parmComponents;\n        if (parms && parms.length > 0) {\n            // until first element returns true\n            return some(parms.toArray(), i => i.focus());\n        }\n        return false;\n    }\n}\n","<ng-container  *ngIf=\"form\"><nof-edit-parameter  [ngClass]=\"classes(parm)\" *ngFor=\"let parm of parameters\" [parameter]=\"parm\" [parent]=\"parent\" [form]=\"form\"></nof-edit-parameter></ng-container>\n<ng-container *ngIf=\"!form\"><nof-view-parameter [ngClass]=\"classes(parm)\" *ngFor=\"let parm of parameters\" [parameter]=\"parm\" [parent]=\"parent\"></nof-view-parameter></ng-container>","import { AfterViewInit, Component, OnDestroy, QueryList, ViewChildren, OnChanges, Input } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { ContextService, ErrorService } from '@nakedobjects/services';\nimport {\n    CollectionViewModel,\n    DomainObjectViewModel,\n    ListViewModel,\n    MenuViewModel,\n    ViewModelFactoryService\n} from '@nakedobjects/view-models';\nimport { BaseDialogComponent } from '../base-dialog/base-dialog.component';\nimport some from 'lodash-es/some';\nimport { ParametersComponent } from '../parameters/parameters.component';\n\n@Component({\n    selector: 'nof-dialog',\n    templateUrl: 'dialog.component.html',\n    styleUrls: ['dialog.component.css'],\n    standalone: false\n})\nexport class DialogComponent extends BaseDialogComponent implements AfterViewInit, OnDestroy, OnChanges {\n\n    constructor(\n        viewModelFactory: ViewModelFactoryService,\n        error: ErrorService,\n        context: ContextService,\n        formBuilder: FormBuilder) {\n            super(viewModelFactory, error, context, formBuilder);\n    }\n\n    @Input()\n    set parentVM(parent : CollectionViewModel | MenuViewModel | ListViewModel | DomainObjectViewModel) {\n        this.parent = parent;\n    }\n\n    @ViewChildren(ParametersComponent)\n    parmComponents?: QueryList<ParametersComponent>;\n\n    focus(parms: QueryList<ParametersComponent>) {\n        if (parms && parms.length > 0) {\n            some(parms.toArray(), p => p.focus());\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.sub = this.parmComponents?.changes.subscribe(ql => this.focus(ql));\n    }\n}\n","<div *ngIf=\"dialog\" class=\"dialog\">\n\t<div class=\"title\">\n\t\t{{title}}\n\t</div>\n\t<form *ngIf=\"form\" (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\n\t\t<nof-parameters class=\"parameters\" [parameters]=\"parameters\" [parent]=\"dialog\" [form]=\"form\"></nof-parameters>\n        <div class=\"co-validation\">{{message}}</div>\n\t\t<div class=\"form-row\">\n\t\t\t<input class=\"ok\" tabindex=\"0\" type=\"submit\" value=\"OK\" title=\"{{tooltip}}\" nofClick (leftClick)=\"onSubmit()\" (rightClick)=\"onSubmit(true)\" [disabled]=\"!form.valid\" />\n\t\t\t<input class=\"cancel\" tabindex=\"0\" type=\"button\" nofClick (leftClick)=\"close()\" value=\"Cancel\"/>\n\t\t</div>\n\t</form>\n</div>","import { Component, ElementRef, Input, QueryList, ViewChildren } from '@angular/core';\nimport { copy, DragAndDropService, IDraggableViewModel, ItemViewModel, RecentItemViewModel, TableRowColumnViewModel } from '@nakedobjects/view-models';\nimport { focus } from '../helpers-components';\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: '[nof-row]',\n    templateUrl: 'row.component.html',\n    styleUrls: ['row.component.css'],\n    standalone: false\n})\nexport class RowComponent {\n\n    constructor(\n        private readonly dragAndDrop: DragAndDropService,\n    ) { }\n\n    @Input({required : true})\n    item!: ItemViewModel;\n\n    @Input({required : true})\n    row!: number;\n\n    @Input({required : true})\n    withCheckbox!: boolean;\n\n    @Input({required : true})\n    isTable!: boolean;\n\n    @ViewChildren('focus')\n    rowChildren?: QueryList<ElementRef>;\n\n    get id() {\n        return `${this.item.id || 'item'}${this.item.paneId}-${this.row}`;\n    }\n\n    get color() {\n        return this.item.color;\n    }\n\n    get selected() {\n        return this.item.selected;\n    }\n\n    get title() {\n        return this.item.title;\n    }\n\n    get friendlyName() {\n        return this.item instanceof RecentItemViewModel ? this.item.friendlyName : '';\n    }\n\n    tabIndexFirstColumn(i: number | string) {\n        if (this.isTable) {\n            if (this.hasTableTitle()) {\n                return i === 'title' ? 0 : -1;\n            } else if (this.friendlyName) {\n                return i === 'fname' ? 0 : -1;\n            } else if (i === 0) {\n                return 0;\n            }\n        }\n        return -1;\n    }\n\n    tableTitle = () => this.item.tableRowViewModel ? this.item.tableRowViewModel.title : this.title;\n    hasTableTitle = () => this.item.tableRowViewModel?.showTitle || !!(this.item instanceof RecentItemViewModel && this.item.title);\n    tableProperties = (): TableRowColumnViewModel[] => this.item.tableRowViewModel?.properties ?? [];\n\n    propertyType = (property: TableRowColumnViewModel) => property.type;\n    propertyValue = (property: TableRowColumnViewModel) => property.value;\n    propertyFormattedValue = (property: TableRowColumnViewModel) => property.formattedValue;\n    propertyReturnType = (property: TableRowColumnViewModel) => property.returnType;\n\n    doClick = (right?: boolean) => this.item.doClick(right);\n\n    copy(event: KeyboardEvent, item: IDraggableViewModel) {\n        copy(event, item, this.dragAndDrop);\n    }\n\n    focus() {\n        return !!this.rowChildren && this.rowChildren.length > 0 && focus(this.rowChildren.first);\n    }\n}\n","<td class=\"checkbox\" *ngIf=\"withCheckbox\">\n    <input type=\"checkbox\" [id]=\"id\" [(ngModel)]=\"item.selected\">\n</td>\n<ng-container *ngIf=\"!isTable\">\n    <td #focus class=\"reference\" [ngClass]=\"color\" nofClick (leftClick)=\"doClick()\" (rightClick)=\"doClick(true)\"\n         (keydown)=\"copy($event, item)\" (keypress)=\"copy($event, item)\" tabindex=\"0\">\n        <label attr.for=\"{{id}}\">{{title}}</label>\n    </td>\n</ng-container>\n<ng-container *ngIf=\"isTable\">\n    <td #focus *ngIf=\"hasTableTitle()\" nofClick (leftClick)=\"doClick()\" (rightClick)=\"doClick(true)\" [ngClass]=\"color\" class=\"cell\" (keydown)=\"copy($event, item)\" (keypress)=\"copy($event, item)\" [tabindex]=\"tabIndexFirstColumn('title')\">\n        {{tableTitle()}}\n    </td>\n    <td *ngIf=\"friendlyName\" class=\"cell\" [ngClass]=\"color\" nofClick (leftClick)=\"doClick()\" (rightClick)=\"doClick(true)\"\n         (keydown)=\"copy($event, item)\" (keypress)=\"copy($event, item)\" [tabindex]=\"tabIndexFirstColumn('fname')\">\n        {{friendlyName}}\n    </td>\n    <ng-container *ngIf=\"!friendlyName\">\n        <td #focus *ngFor=\"let property of tableProperties(); let i = index\" nofClick (leftClick)=\"doClick()\" (rightClick)=\"doClick(true)\"\n            [ngClass]=\"color\" class=\"cell\" (keydown)=\"copy($event, item)\" (keypress)=\"copy($event, item)\" [tabindex]=\"tabIndexFirstColumn(i)\">\n            <ng-container [ngSwitch]=\"propertyType(property)\">\n                <ng-container *ngSwitchCase=\"'ref'\">\n                    {{propertyFormattedValue(property)}}\n                </ng-container>\n                <ng-container *ngSwitchCase=\"'scalar'\" [ngSwitch]=\"propertyReturnType(property)\">\n                    <ng-container *ngSwitchCase=\"'boolean'\">\n                        <input type=\"checkbox\" [checked]=\"propertyValue(property)\" disabled=\"disabled\" />\n                    </ng-container>\n                    <ng-container *ngSwitchCase=\"'number'\">\n                        <div class=\"number\">{{propertyFormattedValue(property)}}</div>\n                    </ng-container>\n                    <ng-container *ngSwitchDefault>\n                        <div>{{propertyFormattedValue(property)}}</div>\n                    </ng-container>\n                </ng-container>\n            </ng-container>\n        </td>\n    </ng-container>\n</ng-container>\n","import { Component, Input } from '@angular/core';\nimport { CollectionViewState } from '@nakedobjects/services';\nimport { CollectionViewModel, ListViewModel } from '@nakedobjects/view-models';\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: '[nof-header]',\n    templateUrl: 'header.component.html',\n    styleUrls: ['header.component.css'],\n    standalone: false\n})\nexport class HeaderComponent {\n\n    @Input({required: true})\n    collection!: CollectionViewModel | ListViewModel;\n\n    @Input()\n    state?: CollectionViewState;\n\n    allSelected = () => this.collection.allSelected();\n    selectAll = () => this.collection.selectAll();\n\n    itemId = () => `${this.collection.name}${this.collection.onPaneId}-all`;\n\n    private noItems() {\n        return !this.collection.items || this.collection.items.length === 0;\n    }\n\n    showAllCheckbox = () => !(this.collection.noActions() || this.noItems());\n\n    get header() {\n        return this.state === CollectionViewState.Table ? this.collection.header : null;\n    }\n}\n","<th *ngIf=\"showAllCheckbox()\">\n    <input type=\"checkbox\" [id]=\"itemId()\" [ngModel]=\"allSelected()\" (click)=\"selectAll()\" title=\"All\" />\n</th>\n<ng-container *ngIf=\"header\">\n    <th *ngFor=\"let heading of header\" scope=\"col\">{{heading}}</th>\n</ng-container>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { CollectionViewState, PaneRouteData, UrlManagerService } from '@nakedobjects/services';\nimport { CollectionViewModel, ItemViewModel, DragAndDropService } from '@nakedobjects/view-models';\nimport { SubscriptionLike as ISubscription } from 'rxjs';\nimport { safeUnsubscribe } from '../helpers-components';\n// needed for declarations compile\n\ntype State = 'summary' | 'list' | 'table';\n\n@Component({\n    selector: 'nof-collection',\n    templateUrl: 'collection.component.html',\n    styleUrls: ['collection.component.css'],\n    standalone: false\n})\nexport class CollectionComponent implements OnInit, OnDestroy {\n\n    private ddSub?: ISubscription;\n    dropZones: string[] = [];\n\n    constructor(\n        private readonly urlManager: UrlManagerService,\n        private readonly dragAndDrop: DragAndDropService\n    ) { }\n\n    @Input({required : true})\n    collection!: CollectionViewModel;\n\n    private paneRouteDataSub?: ISubscription;\n    private lastPaneRouteData?: PaneRouteData;\n    private currentOid?: string;\n\n    selectedDialogId?: string;\n\n    get currentState() {\n        return this.collection.currentState;\n    }\n\n    get state() {\n        return CollectionViewState[this.currentState!].toString().toLowerCase() as State;\n    }\n\n    get title() {\n        return this.collection.title;\n    }\n\n    get details() {\n        return this.collection.details;\n    }\n\n    get mayHaveItems() {\n        return this.collection.mayHaveItems;\n    }\n\n    get header() {\n        return this.collection.header;\n    }\n\n    get items(): ItemViewModel[] {\n        return this.collection.items ?? [];\n    }\n\n    get message() {\n        return this.collection.getMessage();\n    }\n\n    private isSummary = () => this.collection.currentState === CollectionViewState.Summary;\n\n    private isList = () => this.collection.currentState === CollectionViewState.List;\n\n    private isTable = () => this.collection.currentState === CollectionViewState.Table;\n\n    showActions = () => !this.disableActions() && (this.isTable() || this.isList());\n    showSummary = () => (this.mayHaveItems || !this.disableActions()) && (this.isList() || this.isTable());\n    showList = () => (this.mayHaveItems || !this.disableActions()) && (this.isTable() || this.isSummary());\n    showTable = () => this.mayHaveItems && (this.isList() || this.isSummary());\n\n    doSummary = () => this.collection.doSummary();\n    doList = () => this.collection.doList();\n    doTable = () => this.collection.doTable();\n    disableActions = () => this.collection.noActions();\n\n    hasTableData = () => this.collection.hasTableData();\n\n    setDropZones(ids: string[]) {\n        setTimeout(() => this.dropZones = ids);\n    }\n\n    ngOnInit(): void {\n\n        this.paneRouteDataSub = this.urlManager.getPaneRouteDataObservable(this.collection.onPaneId)\n            .subscribe((paneRouteData: PaneRouteData) => {\n                if (!paneRouteData.isEqual(this.lastPaneRouteData)) {\n                    this.lastPaneRouteData = paneRouteData;\n                    this.currentOid = this.currentOid || paneRouteData.objectId;\n\n                    // ignore if different object\n                    if (this.currentOid === paneRouteData.objectId) {\n                        this.collection.reset(paneRouteData, false);\n                        this.collection.resetMessage();\n                    }\n                    this.selectedDialogId = paneRouteData.dialogId;\n                }\n            });\n        this.ddSub = this.dragAndDrop.dropZoneIds$.subscribe(ids => this.setDropZones(ids || []));\n    }\n\n    ngOnDestroy(): void {\n        safeUnsubscribe(this.paneRouteDataSub);\n        safeUnsubscribe(this.ddSub);\n    }\n}\n","<div class=\"summary\">\n    <div class=\"name\">{{title}}:</div>\n    <div class=\"details\">{{details}}</div>\n    <div>\n        <div *ngIf=\"showSummary()\" class=\"icon summary\" (click)=\"doSummary()\"  title=\"Close Collection\" alt=\"Close Collection\"></div>\n        <div *ngIf=\"showList()\" class=\"icon list\" (click)=\"doList()\"  title=\"View as List\" alt=\"View as List\"></div>\n        <div *ngIf=\"showTable()\" class=\"icon table\" (click)=\"doTable()\"  title=\"View as Table\" alt=\"View as Table\"></div>\n    </div>\n</div>\n<div class=\"messages\">{{message}}</div>\n<nof-action-bar *ngIf=\"showActions()\" class=\"actions\" [menuHolder]=\"collection\"></nof-action-bar>\n<nof-dialog *ngIf=\"showActions()\" [parentVM]=\"collection\" [selectedDialogId]=\"selectedDialogId\"></nof-dialog>\n\n<table *ngIf=\"showSummary()\">\n    <thead>\n        <tr nof-header [collection]=\"collection\" [state]=\"currentState\"></tr>\n    </thead>\n    <tbody *ngIf=\"state === 'list' || hasTableData()\" cdkDropList [cdkDropListConnectedTo]=\"dropZones\" [cdkDropListOrientation]=\"'horizontal'\">\n        <tr *ngFor=\"let item of items; let i = index\" cdkDrag [cdkDragData]=\"item\" nof-row [item]=\"item\" [row]=\"i\" [withCheckbox]=\"!disableActions()\" [isTable]=\"state === 'table'\"></tr>\n    </tbody>\n</table>","import { Component, Input } from '@angular/core';\nimport { CollectionViewModel } from '@nakedobjects/view-models';\n\n@Component({\n    selector: 'nof-collections',\n    templateUrl: 'collections.component.html',\n    styleUrls: ['collections.component.css'],\n    standalone: false\n})\nexport class CollectionsComponent {\n\n    @Input({required: true})\n    collections!: CollectionViewModel[];\n\n    classes(coll: CollectionViewModel) {\n        const hint = coll.presentationHint ?? '';\n        return `collection ${hint}`.trim();\n    }\n}\n","<nof-collection [ngClass]=\"classes(collection)\" *ngFor=\"let collection of collections\" [collection]=\"collection\"></nof-collection>","import { Component, OnInit } from '@angular/core';\nimport { ContextService } from '@nakedobjects/services';\nimport { ViewModelFactoryService } from '@nakedobjects/view-models';\n\n@Component({\n    selector: 'nof-error',\n    templateUrl: 'error.component.html',\n    styleUrls: ['error.component.css'],\n    standalone: false\n})\nexport class ErrorComponent implements OnInit {\n\n    constructor(\n        private readonly context: ContextService,\n        private readonly viewModelFactory: ViewModelFactoryService\n    ) { }\n\n    // template API\n\n    title = '';\n    message = '';\n    errorCode = '';\n    description = '';\n    stackTrace: string[] = [];\n\n    ngOnInit(): void {\n        // expect dynamic-error to  have checked if the context has an error\n        const errorWrapper = this.context.getError();\n        const error = this.viewModelFactory.errorViewModel(errorWrapper);\n\n        this.title = error.title ?? '';\n        this.message = error.message ?? '';\n        this.errorCode = error.errorCode ?? '';\n        this.description = error.description ?? '';\n        this.stackTrace = error.stackTrace ?? [];\n    }\n}\n","<div class=\"error\">\n    <div class=\"title\">{{title}}</div>\n    <div class=\"message\">Message: {{message}}</div>\n    <div class=\"code\">Code: {{errorCode}}</div>\n    <div class=\"description\">Description: {{description}}.</div>\n    <div class=\"stacktrace\">\n        Stack Trace :\n        <div class=\"line\" *ngFor=\"let line of stackTrace\">{{line}}</div>\n    </div>\n</div>","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport * as Ro from '@nakedobjects/restful-objects';\nimport {\n    CollectionViewState,\n    ConfigService,\n    ContextService,\n    ErrorService,\n    ErrorWrapper,\n    ICustomActivatedRouteData,\n    LoggerService,\n    PaneRouteData,\n    UrlManagerService\n} from '@nakedobjects/services';\nimport { ItemViewModel, ListViewModel, ViewModelFactoryService, DragAndDropService } from '@nakedobjects/view-models';\nimport { SubscriptionLike as ISubscription } from 'rxjs';\nimport { IActionHolder } from '../action/action.component';\nimport { safeUnsubscribe } from '../helpers-components';\n\n@Component({\n    selector: 'nof-list',\n    templateUrl: 'list.component.html',\n    styleUrls: ['list.component.css'],\n    standalone: false\n})\nexport class ListComponent implements OnInit, OnDestroy {\n\n    private ddSub?: ISubscription;\n    dropZones: string[] = [];\n\n    constructor(\n        private readonly activatedRoute: ActivatedRoute,\n        private readonly urlManager: UrlManagerService,\n        private readonly context: ContextService,\n        private readonly viewModelFactory: ViewModelFactoryService,\n        private readonly error: ErrorService,\n        private readonly configService: ConfigService,\n        private readonly loggerService: LoggerService,\n        private readonly dragAndDrop: DragAndDropService\n    ) {\n    }\n\n    collection!: ListViewModel;\n    title = '';\n    currentState? = CollectionViewState.List;\n    selectedDialogId?: string;\n\n    private actionButton: IActionHolder = {\n        value: 'Actions',\n        doClick: () => this.toggleActionMenu(),\n        show: () => true,\n        disabled: () => this.disableActions(),\n        tempDisabled: () => null,\n        title: () => this.actionsTooltip,\n        accesskey: 'a',\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private reloadButton: IActionHolder = {\n        value: 'Reload',\n        doClick: () => this.reloadList(),\n        show: () => true,\n        disabled: () => null,\n        tempDisabled: () => null,\n        title: () => '',\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private firstButton: IActionHolder = {\n        value: 'First',\n        doClick: () => this.pageFirst(),\n        show: () => true,\n        disabled: () => this.pageFirstDisabled(),\n        tempDisabled: () => null,\n        title: () => '',\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private previousButton: IActionHolder = {\n        value: 'Previous',\n        doClick: () => this.pagePrevious(),\n        show: () => true,\n        disabled: () => this.pagePreviousDisabled(),\n        tempDisabled: () => null,\n        title: () => '',\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private nextButton: IActionHolder = {\n        value: 'Next',\n        doClick: () => this.pageNext(),\n        show: () => true,\n        disabled: () => this.pageNextDisabled(),\n        tempDisabled: () => null,\n        title: () => '',\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private lastButton: IActionHolder = {\n        value: 'Last',\n        doClick: () => this.pageLast(),\n        show: () => true,\n        disabled: () => this.pageLastDisabled(),\n        tempDisabled: () => null,\n        title: () => '',\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    \n    private activatedRouteDataSub?: ISubscription;\n    private paneRouteDataSub?: ISubscription;\n    private lastPaneRouteData?: PaneRouteData;\n\n    toggleActionMenu = () => this.collection.toggleActionMenu();\n    reloadList = () => this.collection.reload();\n    pageFirst = () => this.collection.pageFirst();\n    pagePrevious = () => this.collection.pagePrevious();\n    pageNext = () => this.collection.pageNext();\n    pageLast = () => this.collection.pageLast();\n\n    disableActions = () => this.collection.noActions() ? true : null;\n    hideAllCheckbox = () => this.collection.noActions() || !this.collection.items || this.collection.items.length === 0;\n\n    pageFirstDisabled = () => this.collection.pageFirstDisabled() ? true : null;\n    pagePreviousDisabled = () => this.collection.pagePreviousDisabled() ? true : null;\n    pageNextDisabled = () => this.collection.pageNextDisabled() ? true : null;\n    pageLastDisabled = () => this.collection.pageLastDisabled() ? true : null;\n\n    showActions = () => this.collection.showActions();\n\n    doTable = () => this.collection.doTable();\n    doList = () => this.collection.doList();\n    doSummary = () => this.collection.doSummary();\n\n    hasTableData = () => this.collection.hasTableData();\n\n    get actionsTooltip() {\n        return this.collection.actionsTooltip();\n    }\n\n    get message() {\n        return this.collection.getMessage();\n    }\n\n    get description() {\n        return this.collection.description();\n    }\n\n    get size() {\n        return this.collection.size;\n    }\n\n    get items(): ItemViewModel[] {\n        return this.collection.items ?? [];\n    }\n\n    get header() {\n        return this.collection.header;\n    }\n\n    get actionHolders() {\n        return [this.actionButton, this.reloadButton, this.firstButton, this.previousButton, this.nextButton, this.lastButton];\n    }\n\n    get state() {\n        return CollectionViewState[this.currentState!].toString().toLowerCase();\n    }\n\n    getActionExtensions(routeData: PaneRouteData): Promise<Ro.Extensions> {\n        return routeData.objectId\n            ? this.context.getActionExtensionsFromObject(routeData.paneId, Ro.ObjectIdWrapper.fromObjectId(routeData.objectId, this.configService.config.keySeparator), routeData.actionId!)\n            : this.context.getActionExtensionsFromMenu(routeData.menuId!, routeData.actionId!);\n    }\n\n    protected setup(routeData: PaneRouteData) {\n        const cachedList = this.context.getCachedList(routeData.paneId, routeData.page!, routeData.pageSize!);\n\n        this.getActionExtensions(routeData)\n            .then((ext: Ro.Extensions) =>\n                this.title = ext.friendlyName())\n            .catch((reject: ErrorWrapper) => this.error.handleError(reject));\n\n        const listKey = this.urlManager.getListCacheIndex(routeData.paneId, routeData.page!, routeData.pageSize!);\n\n        if (this.collection && this.collection.id === listKey) {\n            // same collection/page\n            this.currentState = routeData.state;\n            this.collection.refresh(routeData);\n        } else if (this.collection && cachedList) {\n            // same collection different page\n            this.currentState = routeData.state;\n            this.collection.reset(cachedList, routeData);\n        } else if (cachedList) {\n            // new collection\n            this.collection = this.viewModelFactory.listViewModel(cachedList, routeData);\n            this.currentState = routeData.state;\n            this.collection.refresh(routeData);\n        } else {\n            // should never get here\n            this.loggerService.throw('ListComponent:setup Missing cachedList');\n        }\n\n        if (this.collection) {\n            // if any previous messages clear them\n            this.collection.resetMessage();\n        }\n\n        this.selectedDialogId = routeData.dialogId;\n    }\n\n    setDropZones(ids: string[]) {\n        setTimeout(() => this.dropZones = ids);\n    }\n\n    // now this is a child investigate reworking so object is passed in from parent\n    ngOnInit(): void {\n        this.activatedRouteDataSub = this.activatedRoute.data.subscribe(d => {\n            const data = d as ICustomActivatedRouteData;\n            const paneId = data.pane;\n\n            if (!this.paneRouteDataSub) {\n                this.paneRouteDataSub =\n                    this.urlManager.getPaneRouteDataObservable(paneId)\n                        .subscribe((paneRouteData: PaneRouteData) => {\n                            if (!paneRouteData.isEqual(this.lastPaneRouteData)) {\n                                this.lastPaneRouteData = paneRouteData;\n                                this.setup(paneRouteData);\n                            }\n                        });\n            }\n        });\n\n        this.ddSub = this.dragAndDrop.dropZoneIds$.subscribe(ids => this.setDropZones(ids || []));\n    }\n\n    ngOnDestroy(): void {\n        safeUnsubscribe(this.paneRouteDataSub);\n        safeUnsubscribe(this.activatedRouteDataSub);\n        safeUnsubscribe(this.ddSub);\n    }\n}\n","<ng-container *ngIf=\"collection\">\n    <div class=\"list\">\n        <header class=\"header\">\n            <div class=\"title\">{{title}}</div>\n            <nof-action-bar [actions]=\"actionHolders\"></nof-action-bar>\n            <div class=\"messages\">{{message}}</div>\n        </header>\n        <div class=\"details\" *ngIf=\"size === 0\">{{description}}</div>\n        <ng-container *ngIf=\"size > 0\">\n            <nof-action-list *ngIf=\"showActions()\" [menuHolder]=\"collection\"></nof-action-list>\n            <nof-dialog [parentVM]=\"collection\" [selectedDialogId]=\"selectedDialogId\"></nof-dialog>\n            <div class=\"summary\">\n                <div class=\"details\">{{description}}</div>\n                <div *ngIf=\"state === 'list'\" class=\"icon table\" (click)=\"doTable()\"  title=\"View as Table\" alt=\"View as Table\"></div>\n                <div *ngIf=\"state === 'table'\" class=\"icon list\" (click)=\"doList()\"  title=\"View as List\" alt=\"View as List\"></div>\n             </div>\n             <table>\n                    <thead>\n                        <tr nof-header [collection]=\"collection\" [state]=\"currentState\"></tr>\n                    </thead>\n                    <tbody *ngIf=\"state === 'list' || hasTableData()\" cdkDropList [cdkDropListConnectedTo]=\"dropZones\" [cdkDropListOrientation]=\"'horizontal'\">\n                        <tr *ngFor=\"let item of items; let i = index\" cdkDrag [cdkDragData]=\"item\" nof-row [item]=\"item\" [row]=\"i\" [withCheckbox]=\"!disableActions()\" [isTable]=\"state === 'table'\"></tr>\n                    </tbody>\n                </table>\n        </ng-container>\n    </div>\n</ng-container>","import {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    HostListener,\n    Input,\n    OnDestroy,\n    OnInit,\n    QueryList,\n    Renderer2,\n    ViewChildren\n    } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport * as Ro from '@nakedobjects/restful-objects';\nimport { LoggerService } from '@nakedobjects/services';\nimport { AttachmentViewModel, ChoiceViewModel, DomainObjectViewModel, DragAndDropService, PropertyViewModel } from '@nakedobjects/view-models';\nimport { Dictionary } from 'lodash';\nimport { AutoCompleteComponent } from '../auto-complete/auto-complete.component';\nimport { DatePickerFacadeComponent } from '../date-picker-facade/date-picker-facade.component';\nimport { FieldComponent } from '../field/field.component';\nimport { TimePickerFacadeComponent } from '../time-picker-facade/time-picker-facade.component';\n\n@Component({\n    selector: 'nof-edit-property',\n    templateUrl: 'edit-property.component.html',\n    styleUrls: ['edit-property.component.css'],\n    standalone: false\n})\nexport class EditPropertyComponent extends FieldComponent implements OnInit, OnDestroy, AfterViewInit {\n\n    constructor(\n        loggerService: LoggerService,\n        renderer: Renderer2,\n        dragAndDrop: DragAndDropService,\n    ) {\n        super(loggerService, renderer, dragAndDrop);\n    }\n\n    private prop!: PropertyViewModel;\n\n    @ViewChildren('focus')\n    focusList?: QueryList<ElementRef | DatePickerFacadeComponent | TimePickerFacadeComponent | AutoCompleteComponent>;\n\n    @ViewChildren('checkbox')\n    checkboxList?: QueryList<ElementRef>;\n\n    @Input()\n    parent?: DomainObjectViewModel;\n\n    @Input({required: true})\n    set property(value: PropertyViewModel) {\n        this.prop = value;\n        if (this.propertyEntryType === Ro.EntryType.FreeForm) {\n            this.dragAndDrop.setDropZoneId(this.propertyPaneId);\n        }\n    }\n\n    get property() {\n        return this.prop;\n    }\n\n    get propertyPaneId() {\n        return this.property.paneArgId;\n    }\n\n    get propertyId() {\n        return this.property.id;\n    }\n\n    get propertyChoices() {\n        return this.property.choices;\n    }\n\n    get title() {\n        return this.property.title;\n    }\n\n    get propertyType() {\n        return this.property.type;\n    }\n\n    get propertyReturnType() {\n        return this.property.returnType;\n    }\n\n    get propertyEntryType(): Ro.EntryType {\n        return this.property.entryType;\n    }\n\n    get isEditable() {\n        return this.property.isEditable;\n    }\n\n    get formattedValue() {\n        return this.property.formattedValue;\n    }\n\n    get value() {\n        return this.property.formattedValue;\n    }\n\n    get format() {\n        return this.property.format;\n    }\n\n    get isBlob() {\n        return this.property.format === 'blob';\n    }\n\n    get isMultiline() {\n        return !(this.property.multipleLines === 1);\n    }\n\n    get isPassword() {\n        return this.property.password;\n    }\n\n    get multilineHeight() {\n        return `${this.property.multipleLines * 20}px`;\n    }\n\n    get rows() {\n        return this.property.multipleLines;\n    }\n\n    get propertyDescription() {\n        return this.property.description;\n    }\n\n    override get message() {\n        return this.property.getMessage();\n    }\n\n    get attachment(): AttachmentViewModel | null {\n        return this.property.attachment;\n    }\n\n    choiceName(choice: ChoiceViewModel) {\n        return choice.name;\n    }\n\n    classes(): Dictionary<boolean | null> {\n        return {\n            [this.prop.color]: true,\n            'candrop': this.canDrop,\n            'dnd-drag-over': this.dragOver,\n        };\n    }\n\n    @Input({required: true})\n    set form(fm: FormGroup) {\n        this.formGroup = fm;\n    }\n\n    get form() {\n        return this.formGroup;\n    }\n\n    ngOnInit(): void {\n        super.init(this.parent, this.property, this.form.controls[this.prop.id]);\n    }\n\n    @HostListener('keydown', ['$event'])\n    onKeydown(event: KeyboardEvent) {\n        this.handleKeyEvents(event, this.isMultiline);\n    }\n\n    @HostListener('keypress', ['$event'])\n    onKeypress(event: KeyboardEvent) {\n        this.handleKeyEvents(event, this.isMultiline);\n    }\n\n    ngAfterViewInit() {\n        this.populateBoolean();\n    }\n\n    override ngOnDestroy(): void {\n        this.dragAndDrop.clearDropZoneId(this.propertyPaneId);\n        super.ngOnDestroy();\n    }\n}\n","<div [formGroup]=\"form\">\n    <div class=\"name\">{{title}}:</div>\n    <div class=\"field\">\n    <ng-container *ngIf=\"propertyType === 'ref'\">\n\n        <div *ngIf=\"!isEditable\" class=\"value\" [ngClass]=\"classes()\">\n            {{formattedValue}}\n        </div>\n\n        <div *ngIf=\"isEditable\" class=\"input-control text\" [ngSwitch]=\"propertyEntryType\">\n            <!--\"EntryType.AutoComplete\"-->\n            <ng-container *ngSwitchCase=\"5\">\n                <nof-auto-complete #focus [form]=\"form\" [model]=\"property\"></nof-auto-complete>\n            </ng-container>\n\n            <!--\"EntryType.ConditionalChoices\"-->\n            <ng-container *ngSwitchCase=\"3\">\n                <select #focus [id]=\"propertyPaneId\"  [formControlName]=\"propertyId\">\n                    <option *ngFor=\"let choice of propertyChoices\" [ngValue]=\"choice\">{{choiceName(choice)}}</option>\n                </select>\n            </ng-container>\n\n            <!--\"EntryType.Choices\"-->\n            <ng-container *ngSwitchCase=\"1\">\n                <select #focus [id]=\"propertyPaneId\"  [formControlName]=\"propertyId\">\n                    <option *ngFor=\"let choice of propertyChoices\" [ngValue]=\"choice\">{{choiceName(choice)}}</option>\n                </select>\n            </ng-container>\n\n            <!--\"EntryType.FreeForm\"-->\n            <ng-container *ngSwitchCase=\"0\">\n                <input\n                    #focus\n                    [id]=\"propertyPaneId\"\n                    class=\"value droppable\"\n                    cdkDropList\n                    (cdkDropListDropped)=\"drop($event)\"\n                    (cdkDropListExited)=\"exit()\"\n                    (cdkDropListEntered)=\"enter()\"\n                    [cdkDropListEnterPredicate]=\"accept\"\n                    [ngClass]=\"classes()\"\n                    placeholder=\"{{propertyDescription}}\"\n                    type=\"text\"\n                    [formControlName]=\"propertyId\"\n                    [nofClear]=\"subject\"\n                    (clear)=\"clear()\"/>\n            </ng-container>\n\n        </div>\n    </ng-container>\n\n    <ng-container *ngIf=\"propertyType === 'scalar'\">\n\n        <ng-container *ngIf=\"!isEditable\">\n            <ng-container [ngSwitch]=\"propertyReturnType\">\n                <ng-container *ngSwitchCase=\"'string'\">\n                    <nof-attachment-property *ngIf=\"isBlob\" [attachment]=\"attachment\"></nof-attachment-property>\n                    <ng-container *ngIf=\"!isBlob\">\n                        <div *ngIf=\"!isMultiline\" class=\"value\">\n                            {{formattedValue}}\n                        </div>\n                        <div *ngIf=\"isMultiline\" class=\"value multiline\" [ngStyle]=\"{height : multilineHeight}\">\n                            <pre>{{formattedValue}}</pre>\n                        </div>\n                    </ng-container>\n                </ng-container>\n\n                <ng-container *ngSwitchCase=\"'boolean'\">\n                    <input type=\"checkbox\"  [checked]=\"value\" disabled=\"disabled\" />\n                </ng-container>\n\n                <ng-container *ngSwitchDefault>\n                    <div class=\"value\">\n                        {{formattedValue}}\n                    </div>\n                </ng-container>\n\n            </ng-container>\n        </ng-container>\n\n        <div *ngIf=\"isEditable\" class=\"input-control text\">\n            <ng-container [ngSwitch]=\"propertyEntryType\">\n                <!--\"EntryType.AutoComplete\"-->\n                <ng-container *ngSwitchCase=\"5\">\n                    <nof-auto-complete #focus [form]=\"form\" [model]=\"property\"></nof-auto-complete>\n                </ng-container>\n\n                <!--\"EntryType.ConditionalChoices\"-->\n                <ng-container *ngSwitchCase=\"3\">\n                    <select #focus [id]=\"propertyPaneId\"  [formControlName]=\"propertyId\">\n                        <option *ngFor=\"let choice of propertyChoices\" [ngValue]=\"choice\">{{choiceName(choice)}}</option>\n                    </select>\n                </ng-container>\n\n                <!--\"EntryType.Choices\"-->\n                <ng-container *ngSwitchCase=\"1\">\n                    <select #focus [id]=\"propertyPaneId\"  [formControlName]=\"propertyId\">\n                        <option *ngFor=\"let choice of propertyChoices\" [ngValue]=\"choice\">{{choiceName(choice)}}</option>\n                    </select>\n                </ng-container>\n\n                <!--\"EntryType.FreeForm\"-->\n                <ng-container *ngSwitchCase=\"0\">\n                    <ng-container [ngSwitch]=\"propertyReturnType\">\n                        <ng-container *ngSwitchCase=\"'string'\" [ngSwitch]=\"format\">\n                            <ng-container *ngSwitchCase=\"'date'\">\n                                <nof-date-picker-facade #focus [control]=\"control\" [form]=\"form\" [model]=\"property\"></nof-date-picker-facade>\n                            </ng-container>\n                            <ng-container *ngSwitchCase=\"'time'\">\n                                <nof-time-picker-facade #focus [control]=\"control\" [form]=\"form\" [model]=\"property\"></nof-time-picker-facade>\n                            </ng-container>\n                            <ng-container *ngSwitchDefault>\n                                <input #focus *ngIf=\"!isMultiline\" [id]=\"propertyPaneId\"  placeholder=\"{{propertyDescription}}\" type=\"{{isPassword ? 'password' : 'text'}}\"\n                                     [formControlName]=\"propertyId\" [nofClear]=\"subject\" (clear)=\"clear()\" />\n                                <textarea #focus *ngIf=\"isMultiline\" rows=\"{{rows}}\" [id]=\"propertyPaneId\" [formControlName]=\"propertyId\"\n                                    placeholder=\"{{propertyDescription}}\"></textarea>\n                            </ng-container>\n                        </ng-container>\n                        <ng-container *ngSwitchCase=\"'boolean'\">\n                            <input #focus #checkbox [id]=\"propertyPaneId\" type=\"checkbox\" [formControlName]=\"propertyId\"/>{{propertyDescription}}\n                        </ng-container>\n                        <ng-container *ngSwitchDefault>\n                            <input #focus [id]=\"propertyPaneId\"  type=\"text\" placeholder=\"{{propertyDescription}}\" [formControlName]=\"propertyId\"\n                                   [nofClear]=\"subject\" (clear)=\"clear()\" />\n                        </ng-container>\n                    </ng-container>\n                </ng-container>\n            </ng-container>\n        </div>\n    </ng-container>\n    <div class=\"validation\">{{message}}</div>\n    </div>\n</div>","import { Component, HostListener, Input, OnInit, OnDestroy } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { copy, DragAndDropService, AttachmentViewModel, PropertyViewModel } from '@nakedobjects/view-models';\nimport { SubscriptionLike as ISubscription } from 'rxjs';\nimport { safeUnsubscribe } from '../helpers-components';\n\n@Component({\n    selector: 'nof-view-property',\n    templateUrl: 'view-property.component.html',\n    styleUrls: ['view-property.component.css'],\n    standalone: false\n})\nexport class ViewPropertyComponent implements OnInit, OnDestroy {\n\n    private ddSub?: ISubscription;\n\n    constructor(\n        private readonly dragAndDrop: DragAndDropService,\n        private readonly router: Router,\n    ) { }\n\n    dropZones: string[] = [];\n\n    // template inputs\n\n    @Input()\n    property?: PropertyViewModel;\n\n    @Input()\n    propertyName?: string;\n\n    // template listeners\n\n    @HostListener('keydown', ['$event'])\n    onEnter(event: KeyboardEvent) {\n        this.copy(event);\n    }\n\n    @HostListener('keypress', ['$event'])\n    onEnter1(event: KeyboardEvent) {\n        this.copy(event);\n    }\n\n    // template API\n\n    get title() {\n        return this.property?.title ?? this.propertyName;\n    }\n\n    get propertyType() {\n        return this.property?.type ?? 'scalar';\n    }\n\n    get propertyRefType() {\n        return this.property?.refType;\n    }\n\n    get propertyReturnType() {\n        return this.property?.returnType ?? '';\n    }\n\n    get formattedValue() {\n        return this.property?.formattedValue ?? '';\n    }\n\n    get value() {\n        return this.property?.value;\n    }\n\n    get format() {\n        return this.property?.format;\n    }\n\n    get isBlob() {\n        return this.property?.format === 'blob';\n    }\n\n    get isMultiline() {\n        return !(this.property?.multipleLines === 1);\n    }\n\n    get multilineHeight() {\n        return `${(this.property?.multipleLines ?? 1) * 20}px`;\n    }\n\n    get color() {\n        return this.property?.color;\n    }\n\n    get attachment(): AttachmentViewModel | null {\n        return this.property?.attachment ?? null;\n    }\n\n    get isEditByAction() {\n        return this.property?.isEditByAction ?? false;\n    }\n\n    get editActionTooltip() {\n        return this.property?.editActionTooltip;\n    }\n\n    get isLink() {\n        return this.property?.isLink;\n    }\n\n    get linkValue() {\n        const lp = this.property?.linkProperties();\n        return lp?.[1] || this.value;\n    }\n\n    doLinkClick(newPane?: boolean) {\n        const href = this.value as string;\n        if (newPane || this.property?.linkProperties()?.[0]) {\n            window.open(href, '_blank');\n        }\n        else if (href.startsWith('http')) {\n            window.location.href = href;\n        }\n        else {  \n            const tree = this.router.createUrlTree([href]);\n            this.router.navigateByUrl(tree);\n        }\n    }\n\n    doClick = (right?: boolean) => this.property?.doClick(right);\n\n    doEdit = () => {\n        if (!this.property?.isEditActionDisabled) {\n          this.property?.doEditByAction();\n        }\n    };\n\n    copy(event: KeyboardEvent) {\n        const prop = this.property;\n        if (prop) {\n            copy(event, prop, this.dragAndDrop);\n        }\n    }\n\n    setDropZones(ids: string[]) {\n        setTimeout(() => this.dropZones = ids);\n    }\n\n    get editActionClass() {\n        return ({\n            tempdisabled: this.property?.isEditActionDisabled,\n        });\n    }\n\n    ngOnInit(): void {\n        this.ddSub = this.dragAndDrop.dropZoneIds$.subscribe(ids => this.setDropZones(ids || []));\n    }\n\n    ngOnDestroy(): void {\n        safeUnsubscribe(this.ddSub);\n    }\n}\n","<div class=\"name\">{{title}}:</div>\n\n<ng-container *ngIf=\"propertyType === 'ref'\">\n    <ng-container [ngSwitch]=\"propertyRefType\" >\n        <div *ngSwitchCase=\"null\"></div>\n        <div *ngSwitchCase=\"'notNavigable'\">\n            <div class=\"value\">{{formattedValue}}</div>\n        </div>\n        <div cdkDropList [cdkDropListConnectedTo]=\"dropZones\">\n            <div *ngSwitchDefault class=\"reference\" [ngClass]=\"color\" nofClick (leftClick)=\"doClick()\"\n                (rightClick)=\"doClick(true)\" cdkDrag [cdkDragData]=\"property\" tabindex=\"0\">\n                {{formattedValue}}\n            </div>\n        </div>\n    </ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"propertyType === 'scalar'\">\n    <ng-container [ngSwitch]=\"propertyReturnType\">\n        <ng-container *ngSwitchCase=\"'string'\">\n\n            <nof-attachment-property *ngIf=\"isBlob\" [attachment]=\"attachment\"></nof-attachment-property>\n            <ng-container *ngIf=\"!isBlob\">\n                <div *ngIf=\"isLink\" class=\"reference url-link\" nofClick (leftClick)=\"doLinkClick()\" (rightClick)=\"doLinkClick(true)\">{{linkValue}}</div> \n                <div *ngIf=\"!isMultiline && !isLink\" class=\"value\">\n                    {{formattedValue}}\n                </div>\n                <div *ngIf=\"isMultiline && !isLink\" class=\"value multiline\" [ngStyle]=\"{height : multilineHeight}\">\n                    <pre>{{formattedValue}}</pre>\n                </div>\n            </ng-container>\n        </ng-container>\n\n        <ng-container *ngSwitchCase=\"'boolean'\">\n            <input type=\"checkbox\" [checked]=\"value\" disabled=\"disabled\" />\n        </ng-container>\n\n        <ng-container *ngSwitchDefault>\n            <div class=\"value\">{{formattedValue}}</div>\n        </ng-container>\n    </ng-container>\n</ng-container>\n<div *ngIf=\"isEditByAction\" class=\"icon edit\" [ngClass]=\"editActionClass\"  [title]=\"editActionTooltip\" (click)=\"doEdit()\"></div>","import { Component, Input, QueryList, ViewChildren } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { DomainObjectViewModel, PropertyViewModel } from '@nakedobjects/view-models';\nimport some from 'lodash-es/some';\nimport { EditPropertyComponent } from '../edit-property/edit-property.component';\n\n@Component({\n    selector: 'nof-properties',\n    templateUrl: 'properties.component.html',\n    styleUrls: ['properties.component.css'],\n    standalone: false\n})\nexport class PropertiesComponent {\n\n    @Input()\n    parent?: DomainObjectViewModel;\n\n    @Input()\n    form?: FormGroup;\n\n    @Input({required : true})\n    properties!: PropertyViewModel[];\n\n    @ViewChildren(EditPropertyComponent)\n    propComponents?: QueryList<EditPropertyComponent>;\n\n    classes(prop: PropertyViewModel) {\n        const hint = prop.presentationHint ?? '';\n        return `property ${hint}`.trim();\n    }\n\n    focus() {\n        const prop = this.propComponents;\n        if (prop && prop.length > 0) {\n            // until first element returns true\n            return some(prop.toArray(), i => i.focus());\n        }\n        return false;\n    }\n}\n","<ng-container *ngIf=\"form\"><nof-edit-property [ngClass]=\"classes(prop)\" *ngFor=\"let prop of properties\" [property]=\"prop\" [parent]=\"parent\" [form]=\"form\"></nof-edit-property></ng-container>\n<ng-container *ngIf=\"!form\"><nof-view-property [ngClass]=\"classes(prop)\" *ngFor=\"let prop of properties\" [property]=\"prop\"></nof-view-property></ng-container>\n\n","import { AfterViewInit, Component, Input, OnDestroy, OnChanges, ViewChildren, QueryList } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { ContextService, ErrorService } from '@nakedobjects/services';\nimport {\n    DomainObjectViewModel,\n    ParameterViewModel,\n    PropertyViewModel,\n    ViewModelFactoryService\n} from '@nakedobjects/view-models';\nimport { BaseDialogComponent } from '../base-dialog/base-dialog.component';\nimport some from 'lodash-es/some';\nimport map from 'lodash-es/map';\nimport fromPairs from 'lodash-es/fromPairs';\nimport { EditParameterComponent } from '../edit-parameter/edit-parameter.component';\n\n@Component({\n    selector: 'nof-edit-dialog',\n    templateUrl: 'edit-dialog.component.html',\n    styleUrls: ['edit-dialog.component.css'],\n    standalone: false\n})\nexport class EditDialogComponent extends BaseDialogComponent implements AfterViewInit, OnDestroy, OnChanges {\n\n    constructor(\n        viewModelFactory: ViewModelFactoryService,\n        error: ErrorService,\n        context: ContextService,\n        formBuilder: FormBuilder) {\n            super(viewModelFactory, error, context, formBuilder);\n    }\n\n    @Input({required: true})\n    properties!: PropertyViewModel[];\n\n    @ViewChildren(EditParameterComponent)\n    parmComponents?: QueryList<EditParameterComponent>;\n\n    @Input({required: true})\n    set parentObject(obj : DomainObjectViewModel) {\n        this.parent = obj;\n    }\n\n    get parentObject() {\n        return this.parent as DomainObjectViewModel;\n    }\n\n    get parametersProperties(): (ParameterViewModel | PropertyViewModel)[] {\n        const parmMap = fromPairs(this.parameters.map((p) => [p.id.toLowerCase(), p]));\n        return map(this.properties, (p) => parmMap[p.id.toLowerCase()] ?? p);\n    }\n\n    isParameter(parmprop: PropertyViewModel | ParameterViewModel) {\n        return parmprop instanceof ParameterViewModel;\n    }\n\n    asParameter(parmprop: PropertyViewModel | ParameterViewModel) {\n        return parmprop as ParameterViewModel;\n    }\n\n    isLastParameter(parmprop: PropertyViewModel | ParameterViewModel) {\n        return parmprop === this.parameters[this.parameters.length - 1];\n    }\n\n    isProperty(parmprop: PropertyViewModel | ParameterViewModel) {\n        return parmprop instanceof PropertyViewModel;\n    }\n\n    asProperty(parmprop: PropertyViewModel | ParameterViewModel) {\n        return parmprop as PropertyViewModel;\n    }\n\n    private hasHint(parm: ParameterViewModel) {\n        return parm?.presentationHint !== null && parm.presentationHint !== undefined;\n    }\n\n    classes(parmprop: PropertyViewModel | ParameterViewModel) {\n        if (parmprop instanceof PropertyViewModel) {\n            const hint = parmprop.presentationHint ?? '';\n            return `property ${hint}`.trim();\n        }\n        return ({ parameter: true, [parmprop.presentationHint]: this.hasHint(parmprop)});\n    }\n\n    private doNextEditByAction(i: number) {\n        const property = this.properties[i];\n        if (property.isEditByAction && !property.isEditActionDisabled) {\n            property.doEditByAction();\n            return true;\n        }\n        return false;\n    }\n\n    onSubmitNext(right?: boolean) {\n        this.onSubmit(right);\n\n        const merged = this.parametersProperties;\n        const lastParameter = this.parameters[this.parameters.length - 1];\n        const lastParameterIndex = merged.indexOf(lastParameter);\n        const nextMergedIndex = lastParameterIndex + 1;\n        const nextProperty = (nextMergedIndex > merged.length - 1) ? this.properties[0] : merged[nextMergedIndex] as PropertyViewModel;\n        const nextPropertyIndex = this.properties.indexOf(nextProperty);\n\n        for (let i = nextPropertyIndex; i < this.properties.length; i++) {\n            if (this.doNextEditByAction(i)) {\n                return;\n            }\n        }\n\n        for (let i = 0; i < nextPropertyIndex; i++) {\n            if (this.doNextEditByAction(i)) {\n                return;\n            }\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.sub = this.parmComponents?.changes.subscribe(() => this.focus());\n    }\n\n    focus() {\n        const parms = this.parmComponents;\n        if (parms && parms.length > 0) {\n            // until first element returns true\n            return some(parms.toArray(), i => i.focus());\n        }\n        return false;\n    }\n}\n","<div *ngIf=\"dialog\">\n\t<form *ngIf=\"form\" (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\n\t\t<ng-container *ngFor=\"let parmprop of parametersProperties\">\n\t\t\t<nof-edit-parameter *ngIf=\"isParameter(parmprop)\" [ngClass]=\"classes(parmprop)\" [parameter]=\"asParameter(parmprop)\" [parent]=\"parentObject\" [form]=\"form\"></nof-edit-parameter>\n\t\t\t<ng-container *ngIf=\"isLastParameter(parmprop)\">\n\t\t\t\t<div class=\"co-validation\">{{message}}</div>\n\t\t\t\t<div class=\"form-row\">\n\t\t\t\t\t<input class=\"ok\" tabindex=\"0\" type=\"submit\" value=\"OK\" title=\"{{tooltip}}\" nofClick (leftClick)=\"onSubmit()\" (rightClick)=\"onSubmit(true)\" [disabled]=\"!form.valid\" />\n\t\t\t\t\t<input class=\"cancel\" tabindex=\"0\" type=\"button\" nofClick (leftClick)=\"close()\" value=\"Cancel\"/>\n\t\t\t\t\t<input class=\"next\" tabindex=\"0\" type=\"submit\" value=\"Next\" title=\"{{tooltip}}\" nofClick (leftClick)=\"onSubmitNext()\" (rightClick)=\"onSubmitNext(true)\" [disabled]=\"!form.valid\" />\n\t\t\t\t</div>\n\t\t\t</ng-container>\t\t\n\t\t\t<nof-view-property  *ngIf=\"isProperty(parmprop)\" [ngClass]=\"classes(parmprop)\"  [property]=\"asProperty(parmprop)\"></nof-view-property>\n\t\t</ng-container>\t\t\n\t</form>\n</div>","import { AfterViewInit, Component, Input, OnDestroy, OnChanges, ViewChildren, QueryList } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { ColorService, ConfigService, ContextService, ErrorService } from '@nakedobjects/services';\nimport {\n    DomainObjectViewModel,\n    MenuViewModel,\n    ParameterViewModel,\n    ViewModelFactoryService\n} from '@nakedobjects/view-models';\nimport { BaseDialogComponent } from '../base-dialog/base-dialog.component';\nimport some from 'lodash-es/some';\nimport map from 'lodash-es/map';\nimport fromPairs from 'lodash-es/fromPairs';\nimport { EditParameterComponent } from '../edit-parameter/edit-parameter.component';\nimport { IActionHolder } from '../action/action.component';\n\n@Component({\n    selector: 'nof-create-new-dialog',\n    templateUrl: 'create-new-dialog.component.html',\n    styleUrls: ['create-new-dialog.component.css'],\n    standalone: false\n})\nexport class CreateNewDialogComponent extends BaseDialogComponent implements AfterViewInit, OnDestroy, OnChanges {\n\n    constructor(\n        viewModelFactory: ViewModelFactoryService,\n        error: ErrorService,\n        context: ContextService,\n        private readonly colorService: ColorService,\n        private readonly configService: ConfigService,\n        formBuilder: FormBuilder) {\n            super(viewModelFactory, error, context, formBuilder);\n            this.pendingColor = `${configService.config.objectColor}${colorService.getConfiguredDefault()}`;\n    }\n\n    @ViewChildren(EditParameterComponent)\n    parmComponents?: QueryList<EditParameterComponent>;\n\n    @Input({required : true})\n    set toCreateClass(cls: string) {\n        this.toCreate = cls;\n        this.colorService.toColorNumberFromType(cls).then(c => this.pendingColor = `${this.configService.config.objectColor}${c}`);\n    }\n\n    @Input({required : true})\n    set parentMenu(parent: MenuViewModel | DomainObjectViewModel) {\n        this.parent = parent;\n    }\n\n    get parentMenu() {\n        return this.parent as MenuViewModel | DomainObjectViewModel;\n    }\n\n     // used to smooth transition before object set\n    private pendingColor: string;\n\n    get color() {\n         return this.pendingColor;\n    }\n\n    toCreate!: string;\n\n    private saveButton: IActionHolder = {\n        value: 'Save',\n        doClick: () => this.onSubmit(),\n        doRightClick: () => this.onSubmit(true),\n        show: () => true,\n        disabled: () => this.form && !this.form.valid ? true : null,\n        tempDisabled: () => null,\n        title: () => this.tooltip,\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private cancelButton: IActionHolder = {\n        value: 'Cancel',\n        doClick: () => this.close(),\n        show: () => true,\n        disabled: () => null,\n        tempDisabled: () => null,\n        title: () => '',\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private saveButtons = [this.saveButton, this.cancelButton];\n\n    get actionHolders() {\n        return this.saveButtons;\n    }\n\n    get parametersProperties(): (ParameterViewModel | string)[] {\n        const properties = this.dialog?.actionViewModel.createNewProperties;\n        const parmMap = fromPairs(this.parameters.map((p) => [p.title.toLowerCase(), p]));\n        return map(properties, (p) => parmMap[p.toLowerCase()] ?? p);\n    }\n\n    isParameter(parmprop: ParameterViewModel | string) {\n        return parmprop instanceof ParameterViewModel;\n    }\n\n    asParameter(parmprop: ParameterViewModel | string) {\n        return parmprop as ParameterViewModel;\n    }\n\n    isProperty(parmprop: ParameterViewModel | string) {\n        return !this.isParameter(parmprop);\n    }\n\n    asProperty(parmprop: ParameterViewModel | string) {\n        return parmprop as string;\n    }\n\n    private hasHint(parm: ParameterViewModel) {\n        return parm?.presentationHint !== null && parm.presentationHint !== undefined;\n    }\n\n    classes(parmprop: ParameterViewModel) {\n        return ({ parameter: true, [parmprop.presentationHint]: this.hasHint(parmprop)});\n    }\n\n    ngAfterViewInit(): void {\n        this.sub = this.parmComponents?.changes.subscribe(() => this.focus());\n    }\n\n    focus() {\n        const parms = this.parmComponents;\n        if (parms && parms.length > 0) {\n            // until first element returns true\n            return some(parms.toArray(), i => i.focus());\n        }\n        return false;\n    }\n}\n","<div  class=\"object edit\" [ngClass]=\"color\">\n    <header class=\"header\">\n        <div class=\"title\" tabindex=\"0\">{{title}}</div>\n\t\t<div  class=\"menus\">\n\t\t\t<nof-action-bar [actions]=\"actionHolders\"></nof-action-bar>\n\t\t</div>\n\t\t<div class=\"messages\">{{message}}</div>\n    </header>\n    <div class=\"main-column\">\n        <div *ngIf=\"dialog\" class=\"dialog\">\n\t\t\t<form  *ngIf=\"form\" (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\n\t\t\t\t<ng-container *ngFor=\"let parmprop of parametersProperties\">\n\t\t\t\t\t<nof-edit-parameter *ngIf=\"isParameter(parmprop)\" [ngClass]=\"classes(asParameter(parmprop))\" [parameter]=\"asParameter(parmprop)\" [parent]=\"parentMenu\" [form]=\"form\"></nof-edit-parameter>\n\t\t\t\t\t<nof-view-property *ngIf=\"isProperty(parmprop)\" [propertyName]=\"asProperty(parmprop)\" class=\"property\"></nof-view-property>\n\t\t\t\t</ng-container>\n\t\t\t\t<div class=\"co-validation\">{{message}}</div>\n\t\t\t</form>\n\t\t</div>\n    </div>\n</div>","import { AfterViewInit, Component, OnDestroy, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport * as Ro from '@nakedobjects/restful-objects';\nimport {\n    ClientErrorCode,\n    ColorService,\n    ConfigService,\n    ContextService,\n    ErrorCategory,\n    ErrorService,\n    ErrorWrapper,\n    ICustomActivatedRouteData,\n    InteractionMode,\n    PaneRouteData,\n    UrlManagerService\n    } from '@nakedobjects/services';\nimport { CollectionViewModel, copy, DomainObjectViewModel, DragAndDropService, MenuItemViewModel, PropertyViewModel, ViewModelFactoryService } from '@nakedobjects/view-models';\nimport { Dictionary } from 'lodash';\nimport filter from 'lodash-es/filter';\nimport flatten from 'lodash-es/flatten';\nimport forEach from 'lodash-es/forEach';\nimport map from 'lodash-es/map';\nimport mapValues from 'lodash-es/mapValues';\nimport some from 'lodash-es/some';\nimport zipObject from 'lodash-es/zipObject';\nimport { SubscriptionLike as ISubscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { IActionHolder, wrapAction } from '../action/action.component';\nimport { safeUnsubscribe } from '../helpers-components';\nimport { PropertiesComponent } from '../properties/properties.component';\n\n@Component({\n    selector: 'nof-object',\n    templateUrl: 'object.component.html',\n    styleUrls: ['object.component.css'],\n    standalone: false\n})\nexport class ObjectComponent implements OnInit, OnDestroy, AfterViewInit {\n\n    constructor(\n        private readonly activatedRoute: ActivatedRoute,\n        private readonly urlManager: UrlManagerService,\n        private readonly context: ContextService,\n        private readonly viewModelFactory: ViewModelFactoryService,\n        private readonly colorService: ColorService,\n        private readonly error: ErrorService,\n        private readonly formBuilder: FormBuilder,\n        private readonly configService: ConfigService,\n        private readonly dragAndDrop: DragAndDropService,\n    ) {\n        this.pendingColor = `${configService.config.objectColor}${this.colorService.getConfiguredDefault()}`;\n    }\n\n    private actionButton: IActionHolder = {\n        value: 'Actions',\n        doClick: () => this.toggleActionMenu(),\n        show: () => true,\n        disabled: () => this.disableActions(),\n        tempDisabled: () => null,\n        title: () => this.actionsTooltip(),\n        accesskey: 'a',\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private editButton: IActionHolder = {\n        value: 'Edit',\n        doClick: () => this.doEdit(),\n        show: () => this.showEdit(),\n        disabled: () => null,\n        tempDisabled: () => null,\n        title: () => '',\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private reloadButton: IActionHolder = {\n        value: 'Reload',\n        doClick: () => this.doReload(),\n        show: () => true,\n        disabled: () => null,\n        tempDisabled: () => null,\n        title: () => '',\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private saveButton: IActionHolder = {\n        value: 'Save',\n        doClick: () => this.onSubmit(true),\n        show: () => true,\n        disabled: () => this.form && !this.form.valid ? true : null,\n        tempDisabled: () => null,\n        title: () => this.tooltip,\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private saveAndCloseButton: IActionHolder = {\n        value: 'Save & Close',\n        doClick: () => this.onSubmit(false),\n        show: () => this.unsaved(),\n        disabled: () => this.form && !this.form.valid ? true : null,\n        tempDisabled: () => null,\n        title: () => this.tooltip,\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private cancelButton: IActionHolder = {\n        value: 'Cancel',\n        doClick: () => this.doEditCancel(),\n        show: () => true,\n        disabled: () => null,\n        tempDisabled: () => null,\n        title: () => '',\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private actionButtons: IActionHolder[] | null = null;\n    private viewButtons = [this.actionButton, this.editButton, this.reloadButton];\n    private saveButtons = [this.saveButton, this.saveAndCloseButton, this.cancelButton];\n\n    private lastPaneRouteData?: PaneRouteData;\n\n    private activatedRouteDataSub?: ISubscription;\n    private paneRouteDataSub?: ISubscription;\n    private concurrencyErrorSub?: ISubscription;\n    private formSub?: ISubscription;\n    private focusSub?: ISubscription;\n    private ddSub?: ISubscription;\n\n    selectedDialogId?: string;\n    dropZones: string[] = [];\n\n    @ViewChildren(PropertiesComponent)\n    propComponents?: QueryList<PropertiesComponent>;\n\n    // template API\n    expiredTransient = false;\n    object: DomainObjectViewModel | null = null;\n    toCreateClass? = '';\n\n    private mode: InteractionMode | null = null;\n    form: FormGroup | null = null;\n\n    get viewMode() {\n        return this.mode == null ? '' : InteractionMode[this.mode];\n    }\n\n    // must be properties as object may change - eg be reloaded\n    get friendlyName() {\n        const obj = this.object;\n        return obj ? obj.friendlyName : '';\n    }\n\n    // used to smooth transition before object set\n    private pendingColor: string;\n\n    get classes() {\n        const hint = this.object?.presentationHint ?? '';\n        return `${this.color} ${hint}`.trim();\n    }\n\n    get color() {\n        const obj = this.object;\n        return obj ? obj.color : this.pendingColor;\n    }\n\n    get properties() {\n        const obj = this.object;\n        return obj ? obj.properties : [];\n    }\n\n    get collections(): CollectionViewModel[] {\n        const obj = this.object;\n        return obj ? obj.collections : [];\n    }\n\n    get tooltip(): string {\n        const obj = this.object;\n        return obj ? obj.tooltip() : '';\n    }\n\n    isEditDialog(selectedDialogId?: string) {\n        if (selectedDialogId && this.object?.domainObject.hasActionMember(selectedDialogId)) {\n            const action = this.object.domainObject.actionMember(selectedDialogId);\n            return !!action.extensions().editProperties();\n        }\n        return false;\n    }\n\n    onSubmit(viewObject: boolean) {\n        const obj = this.object;\n        if (obj) {\n            // if save OK we will want to null object and form as returned object may differ\n            // and redrawing in current form can fail. If save not OK don't null as\n            // will redraw and display errors.\n            const onSuccess = () => this.clearCurrentObject();\n            obj.doSave(viewObject, onSuccess);\n        }\n    }\n\n    copy(event: KeyboardEvent) {\n        const obj = this.object;\n        if (obj) {\n            copy(event, obj, this.dragAndDrop);\n        }\n    }\n\n    title() {\n        const obj = this.object;\n        return obj ? obj.getTitle(this.mode ?? undefined) : '';\n    }\n\n    disableActions = () => {\n        const obj = this.object;\n        return obj && obj.noActions() ? true : null;\n    };\n\n    actionsTooltip = () => {\n        const obj = this.object;\n        return obj ? obj.actionsTooltip() : '';\n    };\n\n    unsaved = () => {\n        const obj = this.object;\n        return !!obj && obj.unsaved;\n    };\n\n    private do(f: (o: DomainObjectViewModel) => void) {\n        const obj = this.object;\n        if (obj) {\n            f(obj);\n        }\n    }\n\n    toggleActionMenu = () => {\n        this.do((o) => o.toggleActionMenu());\n    };\n\n    doEdit = () => {\n        this.do((o) => o.doEdit());\n    };\n\n    doEditCancel = () => {\n        this.do((o) => o.doEditCancel());\n    };\n\n    showEdit = () => {\n        const obj = this.object;\n        return !!obj && !obj.hideEdit();\n    };\n\n    doReload = () => {\n        this.do((o) => o.doReload());\n    };\n\n    message = () => {\n        const obj = this.object;\n        return obj ? obj.getMessage() : '';\n    };\n\n    showActions = () => {\n        const obj = this.object;\n        return !!obj && obj.showActions();\n    };\n\n    menuItems = () => {\n        const obj = this.object;\n        return obj ? obj.menuItems : [];\n    };\n\n    get actionHolders() {\n        if (this.mode === InteractionMode.View) {\n            return this.viewButtons;\n        }\n\n        if (this.mode === InteractionMode.Edit || this.mode === InteractionMode.Transient) {\n            return this.saveButtons;\n        }\n\n        if (this.mode === InteractionMode.Form) {\n\n            // cache because otherwise we will recreate this array of actionHolders everytime page changes !\n            if (!this.actionButtons) {\n\n                const menuItems = this.menuItems()!;\n                const actions = flatten(map(menuItems, (mi: MenuItemViewModel) => mi.actions!));\n                this.actionButtons = map(actions, a => wrapAction(a));\n            }\n\n            return this.actionButtons;\n        }\n\n        return [] as IActionHolder[];\n    }\n\n    private clearCurrentObject() {\n        this.object = null;\n        this.form = null;\n        this.actionButtons = null;\n    }\n\n    protected setup(routeData: PaneRouteData) {\n        // subscription means may get with no oid\n\n        if (!routeData.objectId) {\n            this.mode = null;\n            return;\n        }\n\n        this.expiredTransient = false;\n\n        const oid = Ro.ObjectIdWrapper.fromObjectId(routeData.objectId, this.configService.config.keySeparator);\n\n        if (this.object && !this.object.domainObject.getOid().isSame(oid)) {\n            // object has changed - clear existing\n            this.clearCurrentObject();\n        }\n\n        const isChanging = !this.object;\n\n        const modeChanging = this.mode !== routeData.interactionMode;\n\n        this.mode = routeData.interactionMode ?? null;\n\n        const wasDirty = this.isDirty(routeData, oid);\n\n        this.selectedDialogId = routeData.dialogId;\n\n        if (routeData.interactionMode === InteractionMode.CreateNew) {\n            this.toCreateClass = routeData.toCreate;\n        }\n\n        if (isChanging || modeChanging || wasDirty) {\n\n            // set pendingColor at once to smooth transition\n            this.colorService.toColorNumberFromType(oid.domainType).then(c => this.pendingColor = `${this.configService.config.objectColor}${c}`);\n\n            this.context.getObject(routeData.paneId, oid, routeData.interactionMode!)\n                .then((object: Ro.DomainObjectRepresentation) => {\n\n                    // only change the object property if the object has changed\n                    if (isChanging || wasDirty) {\n                        this.object = this.viewModelFactory.domainObjectViewModel(object, routeData, wasDirty);\n                    }\n\n                    if (modeChanging || isChanging || wasDirty) {\n                        if (this.mode === InteractionMode.Edit ||\n                            this.mode === InteractionMode.Form ||\n                            this.mode === InteractionMode.Transient) {\n                            this.createForm(this.object!); // will never be null\n                        }\n                    }\n                })\n                .catch((reject: ErrorWrapper) => {\n                    if (reject.category === ErrorCategory.ClientError && reject.clientErrorCode === ClientErrorCode.ExpiredTransient) {\n                        this.context.setError(reject);\n                        this.expiredTransient = true;\n                    } else {\n                        this.error.handleError(reject);\n                    }\n                });\n        }\n    }\n\n    private createForm(vm: DomainObjectViewModel) {\n        safeUnsubscribe(this.formSub);\n\n        const pps = vm.properties;\n        const props = zipObject(map(pps, p => p.id), map(pps, p => p)) as Dictionary<PropertyViewModel>;\n        const editableProps = filter(props, p => p.isEditable);\n        const editablePropsMap = zipObject(map(editableProps, p => p.id), map(editableProps, p => p)) as Dictionary<PropertyViewModel>;\n\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const controls = mapValues(editablePropsMap, p => [p.getValueForControl(), (a: any) => p.validator(a)]) as Dictionary<any>;\n        this.form = this.formBuilder.group(controls);\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        this.formSub = this.form!.valueChanges.subscribe((data: any) => {\n            // cache parm values\n            const obj = this.object;\n            if (obj) {\n                forEach(data, (v, k) => editablePropsMap[k!].setValueFromControl(v));\n                obj.setProperties();\n            }\n        });\n    }\n\n    isDirty(paneRouteData: PaneRouteData, oid?: Ro.ObjectIdWrapper) {\n        oid = oid || Ro.ObjectIdWrapper.fromObjectId(paneRouteData.objectId!, this.configService.config.keySeparator);\n        return this.context.getIsDirty(oid);\n    }\n\n    setDropZones(ids: string[]) {\n        setTimeout(() => this.dropZones = ids);\n    }\n\n    ngOnInit(): void {\n        this.activatedRouteDataSub = this.activatedRoute.data.subscribe(d => {\n            const data = d as ICustomActivatedRouteData;\n            const paneId = data.pane;\n\n            if (!this.paneRouteDataSub) {\n                const paneRouteData = this.urlManager.getPaneRouteDataObservable(paneId);\n                this.paneRouteDataSub =\n                    paneRouteData.pipe(debounceTime(10))\n                        .subscribe((prd: PaneRouteData) => {\n                            if (!prd.isEqual(this.lastPaneRouteData) || this.isDirty(prd)) {\n                                this.lastPaneRouteData = prd;\n                                this.setup(prd);\n                            }\n                        });\n            }\n        });\n\n        this.concurrencyErrorSub = this.context.concurrencyError$.subscribe(oid => {\n            if (this.object && this.object.domainObject.getOid().isSame(oid)) {\n                this.object.concurrency();\n            }\n        });\n\n        this.ddSub = this.dragAndDrop.dropZoneIds$.subscribe(ids => this.setDropZones(ids || []));\n    }\n\n    focus(parms: QueryList<PropertiesComponent>) {\n        if (this.mode == null || this.mode === InteractionMode.View) {\n            return;\n        }\n        if (parms && parms.length > 0) {\n            some(parms.toArray(), p => p.focus());\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.focusSub = this.propComponents?.changes.subscribe(ql => this.focus(ql));\n    }\n\n    ngOnDestroy(): void {\n        safeUnsubscribe(this.activatedRouteDataSub);\n        safeUnsubscribe(this.paneRouteDataSub);\n        safeUnsubscribe(this.concurrencyErrorSub);\n        safeUnsubscribe(this.formSub);\n        safeUnsubscribe(this.focusSub);\n        safeUnsubscribe(this.ddSub);\n    }\n}\n","<div *ngIf=\"expiredTransient\" class=\"title\">The requested view of unsaved object details has expired.</div>\n\n<!--place holder-->\n<ng-container *ngIf=\"!object && !(viewMode === 'CreateNew')\">\n    <div class=\"object view\" [ngClass]=\"color\"></div>\n</ng-container>\n<div *ngIf=\"object && (viewMode === 'View' || viewMode === 'EditByAction')\" class=\"object view\" [ngClass]=\"classes\">\n    <header class=\"header\" cdkDropList [cdkDropListConnectedTo]=\"dropZones\">\n        <div class=\"title\" cdkDrag [cdkDragData]=\"object\" tabindex=\"0\" (keydown)=\"copy($event)\" (keypress)=\"copy($event)\">\n            <span class=\"type\">{{friendlyName}}</span> {{title()}}\n        </div>\n        <!--<div>{{object.isDirty() ? \"*\" : \"\"}} </div>-->\n        <nof-action-bar [actions]=\"actionHolders\"></nof-action-bar>\n        <div class=\"messages\">{{message()}}</div>\n    </header>\n    <nof-action-list *ngIf=\"showActions()\" [menuHolder]=\"object\"></nof-action-list>\n    <div class=\"main-column\">\n        <ng-container *ngIf=\"!isEditDialog(selectedDialogId)\">\n            <nof-dialog  [parentVM]=\"object\" [selectedDialogId]=\"selectedDialogId\"></nof-dialog>\n            <nof-properties class=\"properties\" *ngIf=\"properties\" [properties]=\"properties\"></nof-properties>\n        </ng-container>\n        <nof-edit-dialog *ngIf=\"isEditDialog(selectedDialogId)\" [parentObject]=\"object\" [selectedDialogId]=\"selectedDialogId\" [properties]=\"properties\"></nof-edit-dialog>\n    </div>\n    <nof-collections class=\"collections\" *ngIf=\"collections\" [collections]=\"collections\"></nof-collections>\n</div>\n<div *ngIf=\"object && (viewMode === 'Edit' || viewMode === 'Transient' || viewMode === 'Form')\" class=\"object edit\" [ngClass]=\"classes\">\n    <form  *ngIf=\"form\" (ngSubmit)=\"onSubmit(false)\" [formGroup]=\"form\" autocomplete=\"off\">\n        <header class=\"header\" cdkDropList [cdkDropListConnectedTo]=\"dropZones\">\n            <div class=\"title\" cdkDrag [cdkDragData]=\"object\" tabindex=\"0\" (keydown)=\"copy($event)\" (keypress)=\"copy($event)\">\n                <span class=\"type\">{{friendlyName}}</span> {{title()}}\n            </div>\n            <div *ngIf=\"viewMode === 'Edit' || viewMode === 'Transient' || viewMode === 'Form'\" class=\"menus\">\n                <nof-action-bar [actions]=\"actionHolders\"></nof-action-bar>\n            </div>\n            <div class=\"messages\">{{message()}}</div>\n        </header>\n        <div class=\"main-column\">\n            <nof-properties *ngIf=\"properties\" [properties]=\"properties\" [parent]=\"object\" [form]=\"form\"></nof-properties>\n        </div>\n    </form>\n    <nof-collections *ngIf=\"collections\" [collections]=\"collections\"></nof-collections>\n</div>\n<div *ngIf=\"object && viewMode === 'NotPersistent'\" class=\"object view\" [ngClass]=\"classes\">\n    <header class=\"header\" cdkDropList [cdkDropListConnectedTo]=\"dropZones\">\n        <div class=\"title\" cdkDrag [cdkDragData]=\"object\" tabindex=\"0\" (keydown)=\"copy($event)\" (keypress)=\"copy($event)\">\n            <span class=\"type\">{{friendlyName}}</span> {{title()}}\n        </div>\n        <div class=\"messages\">{{message()}}</div>\n    </header>\n    <div class=\"main-column\">\n        <nof-properties class=\"properties\" *ngIf=\"properties\" [properties]=\"properties\"></nof-properties>\n    </div>\n    <nof-collections class=\"collections\" *ngIf=\"collections\" [collections]=\"collections\"></nof-collections>\n</div>\n<ng-container *ngIf=\"object && viewMode === 'CreateNew'\">\n    <nof-create-new-dialog  [parentMenu]=\"object\" [selectedDialogId]=\"selectedDialogId\" [toCreateClass]=\"toCreateClass!\"></nof-create-new-dialog>\n</ng-container>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'object-not-found-error',\n    templateUrl: 'object-not-found-error.component.html',\n    styleUrls: ['object-not-found-error.component.css'],\n    standalone: false\n})\nexport class ObjectNotFoundErrorComponent implements OnInit {\n    \n    // template API\n\n    title = '';\n    message = '';\n\n    ngOnInit(): void {\n        this.title = 'Object does not exist';\n        this.message = 'The requested object might have been deleted by you or another user. If not, please contact your system administrator.';\n    }\n}\n","<div class=\"error\">\n  <div class=\"title\">{{title}}</div>\n  <div class=\"message\">Message: {{message}}</div>\n</div>","import { Injectable } from '@angular/core';\nimport { ErrorCategory, HttpStatusCode } from '@nakedobjects/services';\nimport { ICustomComponentConfigurator } from './custom-component.service';\nimport { ICustomErrorComponentConfigurator } from './custom-component.service';\nimport { ObjectNotFoundErrorComponent } from './object-not-found-error/object-not-found-error.component';\n\nexport interface ICustomComponentConfigService {\n    configureCustomObjects(custom: ICustomComponentConfigurator): void;\n\n    configureCustomLists(custom: ICustomComponentConfigurator): void;\n\n    configureCustomErrors(custom: ICustomErrorComponentConfigurator): void;\n}\n\n// default implementation which does nothing\n@Injectable()\nexport class CustomComponentConfigService implements ICustomComponentConfigService {\n\n    // Remember custom components need to be added to \"entryComponents\" in app.module.ts !\n\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\n    configureCustomObjects(_custom: ICustomComponentConfigurator) { }\n\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\n    configureCustomLists(_custom: ICustomComponentConfigurator) { }\n\n    configureCustomErrors(custom: ICustomErrorComponentConfigurator) {\n        // by default configure page for 404 errors\n        custom.addError(ErrorCategory.HttpClientError, HttpStatusCode.NotFound, ObjectNotFoundErrorComponent);\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { Type } from '@angular/core';\nimport { ContextService, TypeResultCache, ViewType, ClientErrorCode, ErrorCategory, HttpStatusCode } from '@nakedobjects/services';\nimport { CustomComponentConfigService } from './custom-component-config.service';\nimport { ErrorComponent } from './error/error.component';\nimport { ListComponent } from './list/list.component';\nimport { ObjectComponent } from './object/object.component';\n\nexport interface ICustomComponentConfigurator {\n    addType: (type: string, result: Type<unknown>) => void;\n\n    addMatch: (matcher: RegExp, result: Type<unknown>) => void;\n\n    addSubtype: (type: string, result: Type<unknown>) => void;\n\n    setDefault: (def: Type<unknown>) => void;\n}\n\nexport interface ICustomErrorComponentConfigurator {\n    addError(rc: ErrorCategory, code: HttpStatusCode | ClientErrorCode, result: Type<unknown>): void;\n}\n\nclass CustomComponentCache extends TypeResultCache<Type<unknown>> implements ICustomComponentConfigurator {\n\n    constructor(context: ContextService, def: Type<unknown>) {\n        super(context);\n        this.setDefault(def);\n    }\n}\n\n@Injectable()\nexport class CustomComponentService implements ICustomErrorComponentConfigurator {\n\n    constructor(\n        private readonly context: ContextService,\n        private readonly config: CustomComponentConfigService) {\n\n        this.customComponentCaches = [];\n        this.customComponentCaches[ViewType.Object] = new CustomComponentCache(context, ObjectComponent);\n        this.customComponentCaches[ViewType.List] = new CustomComponentCache(context, ListComponent);\n        this.customComponentCaches[ViewType.Error] = new CustomComponentCache(context, ErrorComponent);\n\n        config.configureCustomObjects(this.customComponentCaches[ViewType.Object]);\n        config.configureCustomLists(this.customComponentCaches[ViewType.List]);\n        config.configureCustomErrors(this);\n    }\n\n    private readonly customComponentCaches: CustomComponentCache[] = [];\n\n    private getErrorKey(rc: ErrorCategory, code: HttpStatusCode | ClientErrorCode) {\n        const key = `${ErrorCategory[rc]}-${rc === ErrorCategory.ClientError ? ClientErrorCode[code] : HttpStatusCode[code]}`;\n        return key;\n    }\n\n    getCustomComponent(domainType: string, viewType: ViewType.Object | ViewType.List | ViewType.Error) {\n        return this.customComponentCaches[viewType].getResult(domainType);\n    }\n\n    getCustomErrorComponent(rc: ErrorCategory, code: HttpStatusCode | ClientErrorCode) {\n        const key = this.getErrorKey(rc, code);\n        return this.customComponentCaches[ViewType.Error].getResult(key);\n    }\n\n    addError(rc: ErrorCategory, code: HttpStatusCode | ClientErrorCode, result: Type<unknown>) {\n        const key = this.getErrorKey(rc, code);\n        this.customComponentCaches[ViewType.Error].addType(key, result);\n    }\n}\n","import { Component, ComponentFactoryResolver, OnInit, Type, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ContextService, LoggerService, UrlManagerService } from '@nakedobjects/services';\nimport { CustomComponentService } from '../custom-component.service';\n\n@Component({\n    selector: 'nof-dynamic-error',\n    templateUrl: 'dynamic-error.component.html',\n    styleUrls: ['dynamic-error.component.css'],\n    standalone: false\n})\nexport class DynamicErrorComponent implements OnInit {\n\n    @ViewChild('parent', { read: ViewContainerRef, static : true })\n    parent?: ViewContainerRef;\n\n    constructor(\n        private readonly context: ContextService,\n        private readonly componentFactoryResolver: ComponentFactoryResolver,\n        private readonly customComponentService: CustomComponentService,\n        private readonly loggerService: LoggerService,\n        private readonly urlManagerService: UrlManagerService\n    ) { }\n\n    ngOnInit() {\n\n        const errorWrapper = this.context.getError();\n        const code = errorWrapper.httpErrorCode || errorWrapper.clientErrorCode;\n        if (errorWrapper && code && this.parent) {\n            this.customComponentService.getCustomErrorComponent(errorWrapper.category, code).then(c => {\n                const childComponent = this.componentFactoryResolver.resolveComponentFactory(c as Type<unknown>);\n                this.parent!.createComponent(childComponent);\n            });\n        } else {\n            this.loggerService.warn('No error found returning to home page');\n            this.urlManagerService.setHomeSinglePane();\n        }\n    }\n}\n","<div #parent></div>\n","import { Component, ComponentFactoryResolver, OnDestroy, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Type } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport * as Ro from '@nakedobjects/restful-objects';\nimport { ConfigService, ContextService, ErrorService, ErrorWrapper, PaneRouteData, UrlManagerService, ViewType } from '@nakedobjects/services';\nimport { IActionHolder } from '../action/action.component';\nimport { CustomComponentService } from '../custom-component.service';\nimport { PaneComponent } from '../pane/pane';\n\n@Component({\n    selector: 'nof-dynamic-list',\n    templateUrl: 'dynamic-list.component.html',\n    styleUrls: ['dynamic-list.component.css'],\n    standalone: false\n})\nexport class DynamicListComponent extends PaneComponent implements OnDestroy {\n\n    @ViewChild('parent', { read: ViewContainerRef, static : true })\n    parent?: ViewContainerRef;\n\n    constructor(\n        activatedRoute: ActivatedRoute,\n        urlManager: UrlManagerService,\n        context: ContextService,\n        private readonly error: ErrorService,\n        private readonly componentFactoryResolver: ComponentFactoryResolver,\n        private readonly customComponentService: CustomComponentService,\n        private readonly configService: ConfigService) {\n        super(activatedRoute, urlManager, context);\n    }\n\n    private reloadPlaceholderButton: IActionHolder = {\n        value: 'Reload',\n        doClick: () => this.reload(),\n        show: () => true,\n        disabled: () => null,\n        tempDisabled: () => null,\n        title: () => '',\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private lastOid: string | null = null;\n    title = '';\n    showPlaceholder = true;\n    private cachedRouteData!: PaneRouteData;\n\n    getActionExtensions(routeData: PaneRouteData): Promise<Ro.Extensions> {\n        return routeData.objectId\n            ? this.context.getActionExtensionsFromObject(routeData.paneId, Ro.ObjectIdWrapper.fromObjectId(routeData.objectId, this.configService.config.keySeparator), routeData.actionId!)\n            : this.context.getActionExtensionsFromMenu(routeData.menuId!, routeData.actionId!);\n    }\n\n    reload() {\n\n        const recreate = () =>\n            this.cachedRouteData!.objectId\n                ? this.context.getListFromObject(this.cachedRouteData)\n                : this.context.getListFromMenu(this.cachedRouteData);\n\n        recreate()\n            .then(() => this.setup(this.cachedRouteData))\n            .catch((reject: ErrorWrapper) => {\n                this.error.handleError(reject);\n            });\n    }\n\n    get actionHolders() {\n        return [this.reloadPlaceholderButton];\n    }\n\n    protected override doSetup(routeData: PaneRouteData) {\n        return super.doSetup(routeData) ||\n            this.context.getCachedList(routeData.paneId, routeData.page!, routeData.pageSize!) == null;\n    }\n\n    protected setup(routeData: PaneRouteData) {\n        this.cachedRouteData = routeData;\n        const cachedList = this.context.getCachedList(routeData.paneId, routeData.page!, routeData.pageSize!);\n\n        if (cachedList) {\n            this.showPlaceholder = false;\n            const et = cachedList.extensions().elementType();\n\n            if (et && et !== this.lastOid) {\n                this.lastOid = et;\n                this.parent?.clear();\n                this.customComponentService.getCustomComponent(et, ViewType.List).then(c => {\n                    const childComponent = this.componentFactoryResolver.resolveComponentFactory(c as Type<unknown>);\n                    this.parent?.createComponent(childComponent);\n                });\n            }\n\n        } else {\n            this.showPlaceholder = true;\n            this.title = 'List';\n            this.parent?.clear();\n            this.lastOid = null; // so we recreate child after reload\n            this.getActionExtensions(routeData)\n                .then((ext: Ro.Extensions) =>\n                    this.title = ext.friendlyName())\n                .catch((reject: ErrorWrapper) => this.error.handleError(reject));\n\n        }\n    }\n\n    override ngOnDestroy(): void {\n        super.ngOnDestroy();\n        this.parent?.clear();\n    }\n}\n","<div [attr.id]=\"paneIdName\" [ngClass]=\"paneType\">\n    <div #parent></div>\n    <div *ngIf=\"showPlaceholder\"class=\"list\">\n        <div class=\"header\">\n            <div class=\"title\">\n                {{title}}\n            </div>\n            <nof-action-bar [actions]=\"actionHolders\"></nof-action-bar>\n        </div>\n    </div>\n</div>\n<router-outlet (activate)=\"onChild()\" (deactivate)=\"onChildless()\"></router-outlet>\n","import { Component, ComponentFactoryResolver, OnDestroy, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Type } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport * as Ro from '@nakedobjects/restful-objects';\nimport { ConfigService, ContextService, PaneRouteData, UrlManagerService, ViewType } from '@nakedobjects/services';\nimport { CustomComponentService } from '../custom-component.service';\nimport { PaneComponent } from '../pane/pane';\n\n@Component({\n    selector: 'nof-dynamic-object',\n    templateUrl: 'dynamic-object.component.html',\n    styleUrls: ['dynamic-object.component.css'],\n    standalone: false\n})\nexport class DynamicObjectComponent extends PaneComponent implements OnDestroy {\n\n    @ViewChild('parent', { read: ViewContainerRef, static : true })\n    parent?: ViewContainerRef;\n\n    constructor(\n        activatedRoute: ActivatedRoute,\n        urlManager: UrlManagerService,\n        context: ContextService,\n        private readonly componentFactoryResolver: ComponentFactoryResolver,\n        private readonly customComponentService: CustomComponentService,\n        private readonly configService: ConfigService) {\n        super(activatedRoute, urlManager, context);\n    }\n\n    private lastOid?: string;\n\n    protected setup(routeData: PaneRouteData) {\n        if (!routeData.objectId) {\n            return;\n        }\n        const oid = Ro.ObjectIdWrapper.fromObjectId(routeData.objectId, this.configService.config.keySeparator);\n\n        if (oid.domainType !== this.lastOid) {\n            this.lastOid = oid.domainType;\n            this.parent?.clear();\n\n            this.customComponentService.getCustomComponent(this.lastOid, ViewType.Object).then(c => {\n                const childComponent = this.componentFactoryResolver.resolveComponentFactory(c as Type<unknown>);\n                this.parent?.createComponent(childComponent);\n            });\n        }\n    }\n\n    override ngOnDestroy(): void {\n        super.ngOnDestroy();\n        this.parent?.clear();\n    }\n}\n","<div [attr.id]=\"paneIdName\" [ngClass]=\"paneType\">\n    <div #parent></div>\n</div>\n<router-outlet (activate)=\"onChild()\" (deactivate)=\"onChildless()\"></router-outlet>\n","import { Location } from '@angular/common';\nimport { Component, OnDestroy, OnInit } from '@angular/core';\nimport {\n    ClickHandlerService,\n    ConfigService,\n    ContextService,\n    ErrorService,\n    ErrorWrapper,\n    Pane,\n    RepLoaderService,\n    UrlManagerService\n} from '@nakedobjects/services';\nimport { DragAndDropService, IDraggableViewModel } from '@nakedobjects/view-models';\nimport { SubscriptionLike as ISubscription } from 'rxjs';\nimport { safeUnsubscribe } from '../helpers-components';\n\n@Component({\n    selector: 'nof-footer',\n    templateUrl: 'footer.component.html',\n    styleUrls: ['footer.component.css'],\n    standalone: false\n})\nexport class FooterComponent implements OnInit, OnDestroy {\n\n    constructor(\n        private readonly urlManager: UrlManagerService,\n        private readonly context: ContextService,\n        private readonly clickHandler: ClickHandlerService,\n        private readonly error: ErrorService,\n        private readonly repLoader: RepLoaderService,\n        private readonly location: Location,\n        private readonly configService: ConfigService,\n        private readonly dragAndDrop: DragAndDropService\n    ) { }\n\n    private warnSub?: ISubscription;\n    private messageSub?: ISubscription;\n    private cvmSub?: ISubscription;\n    private lcSub?: ISubscription;\n    private ddSub?: ISubscription;\n\n    loading?: boolean;\n    userName = '';\n    warnings: string[] = [];\n    messages: string[] = [];\n    copyViewModel?: IDraggableViewModel;\n    dropZones: string[] = [];\n\n    goHome = (right?: boolean) => {\n        const newPane = this.clickHandler.pane(Pane.Pane1, right);\n\n        if (this.configService.config.leftClickHomeAlwaysGoesToSinglePane && newPane === Pane.Pane1) {\n            this.urlManager.setHomeSinglePane();\n        } else {\n            this.urlManager.setHome(newPane);\n        }\n    };\n\n    goBack = () => {\n        this.location.back();\n    };\n\n    goForward = () => {\n        this.location.forward();\n    };\n\n    swapPanes = () => {\n        if (!this.swapDisabled()) {\n            this.context.swapCurrentObjects();\n            this.urlManager.swapPanes();\n        }\n    };\n\n    swapDisabled = () => {\n        return this.urlManager.isMultiLineDialog() ? true : null;\n    };\n\n    singlePane = (right?: boolean) => {\n        this.urlManager.singlePane(this.clickHandler.pane(Pane.Pane1, right));\n    };\n\n    logOff = () => this.urlManager.logoff();\n\n    applicationProperties = () => this.urlManager.applicationProperties();\n\n    recent = (right?: boolean) => {\n        this.urlManager.setRecent(this.clickHandler.pane(Pane.Pane1, right));\n    };\n\n    cicero = () => {\n        this.urlManager.singlePane(this.clickHandler.pane(Pane.Pane1));\n        this.urlManager.cicero();\n    };\n\n    get currentCopyColor() {\n        return this.copyViewModel?.color;\n    }\n\n    get currentCopyTitle() {\n        return this.copyViewModel?.draggableTitle();\n    }\n\n    setDropZones(ids: string[]) {\n        setTimeout(() => this.dropZones = ids);\n    }\n\n    ngOnInit() {\n        this.context.getUser().then(user => this.userName = user.userName()).catch((reject: ErrorWrapper) => this.error.handleError(reject));\n\n        this.lcSub = this.repLoader.loadingCount$.subscribe(count => this.loading = count > 0);\n        this.warnSub = this.context.warning$.subscribe(ws => this.warnings = ws);\n        this.messageSub = this.context.messages$.subscribe(ms => this.messages = ms);\n        this.cvmSub = this.dragAndDrop.copiedViewModel$.subscribe(cvm => this.copyViewModel = cvm);\n        this.ddSub = this.dragAndDrop.dropZoneIds$.subscribe(ids => this.setDropZones(ids || []));\n    }\n\n    ngOnDestroy() {\n        safeUnsubscribe(this.warnSub);\n        safeUnsubscribe(this.messageSub);\n        safeUnsubscribe(this.cvmSub);\n        safeUnsubscribe(this.lcSub);\n        safeUnsubscribe(this.ddSub);\n    }\n}\n","<div class=\"footer\">\n\t<div class=\"icon home\" title=\"Home (Alt-h)\" tabindex=\"0\" nofClick (leftClick)=\"goHome()\" (rightClick)=\"goHome(true)\" accesskey=\"h\"></div>\n\t<div class=\"icon back\" title=\"Back (Alt-b)\" tabindex=\"0\" (click)=\"goBack()\" accesskey=\"b\"></div>\n\t<div class=\"icon forward\" title=\"Forward (Alt-f)\" tabindex=\"0\" (click)=\"goForward()\" accesskey=\"f\"></div>\n\t<div class=\"icon full\" title=\"Expand pane (Alt-e)\" tabindex=\"0\" nofClick (leftClick)=\"singlePane()\" (rightClick)=\"singlePane(true)\"\n\t\taccesskey=\"e\"></div>\n\t<div class=\"icon swap\" [attr.disabled]=\"swapDisabled()\" title=\"Swap panes (Alt-s)\" tabindex=\"0\" (click)=\"swapPanes()\" accesskey=\"s\"></div>\n\t<div class=\"icon recent\" title=\"Recent objects (Alt-r)\" tabindex=\"0\" nofClick (leftClick)=\"recent()\" (rightClick)=\"recent(true)\" accesskey=\"r\"></div>\n\t<div class=\"icon speech\" title=\"Cicero - Speech Interface (Alt-c)\" (click)=\"cicero()\" tabindex=\"0\" accesskey=\"c\"></div>\n\t<div class=\"icon properties\" title=\"Application Properties (Alt-p)\" (click)=\"applicationProperties()\" tabindex=\"0\" accesskey=\"p\"></div>\n\t<div class=\"icon logoff\" title=\"Log off (Alt-l)\" (click)=\"logOff()\" tabindex=\"0\" accesskey=\"l\"></div>\n\t<span *ngIf=\"loading\" class=\"loading\">Loading...</span>\n\n\t<div class=\"warnings\" *ngFor=\"let warning of warnings\">\n\t\t<div>{{warning}}</div>\n\t</div>\n\t<div class=\"messages\" *ngFor=\"let message of messages\">\n\t\t<div>{{message}}</div>\n\t</div>\n\t<div *ngIf=\"copyViewModel\" class=\"currentcopy\">\n        <span>Copying...</span>\n        <div cdkDropList [cdkDropListConnectedTo]=\"dropZones\">\n            <div class=\"reference\" [ngClass]=\"currentCopyColor\" cdkDrag [cdkDragData]=\"copyViewModel\">{{currentCopyTitle}}</div>\n        </div>\n    </div>\n</div>","import { AfterViewInit, Component, Input, OnDestroy, QueryList, ViewChildren } from '@angular/core';\nimport { UrlManagerService } from '@nakedobjects/services';\nimport { LinkViewModel } from '@nakedobjects/view-models';\nimport map from 'lodash-es/map';\nimport some from 'lodash-es/some';\nimport { SubscriptionLike as ISubscription } from 'rxjs';\nimport { ActionComponent, IActionHolder } from '../action/action.component';\nimport { safeUnsubscribe } from '../helpers-components';\n\n@Component({\n    selector: 'nof-menu-bar',\n    templateUrl: 'menu-bar.component.html',\n    styleUrls: ['menu-bar.component.css'],\n    standalone: false\n})\nexport class MenuBarComponent implements AfterViewInit, OnDestroy {\n\n    constructor(private readonly urlManager: UrlManagerService) { }\n\n    @ViewChildren(ActionComponent)\n    actionComponents?: QueryList<ActionComponent>;\n\n    private sub?: ISubscription;\n\n    @Input()\n    set menus(links: LinkViewModel[]) {\n\n        this.actions = map(links,\n            link => ({\n                value: link.title,\n                doClick: () => {\n                    const menuId = link.link.rel()!.parms[0].value;\n                    this.urlManager.setMenu(menuId!, link.paneId);\n                },\n                // eslint-disable-next-line @typescript-eslint/no-empty-function\n                doRightClick: () => { },\n                show: () => true,\n                disabled: () => null,\n                tempDisabled: () => false,\n                title: () => link.title,\n                accesskey: null,\n                presentationHint: '',\n                showDialog: () => false\n            }));\n    }\n\n    actions: IActionHolder[] = [];\n\n    focusOnFirstMenu(menusList?: QueryList<ActionComponent>) {\n        if (menusList) {\n            // until first element returns true\n            some(menusList.toArray(), i => i.focus());\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.focusOnFirstMenu(this.actionComponents);\n        this.sub = this.actionComponents?.changes.subscribe((ql: QueryList<ActionComponent>) => this.focusOnFirstMenu(ql));\n    }\n\n    ngOnDestroy() {\n        safeUnsubscribe(this.sub);\n    }\n}\n","<nof-action *ngFor=\"let action of actions\" [action]=\"action\"></nof-action>\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport * as Ro from '@nakedobjects/restful-objects';\nimport { ContextService, ErrorService, ErrorWrapper, InteractionMode, PaneRouteData, UrlManagerService } from '@nakedobjects/services';\nimport { LinkViewModel, MenusViewModel, MenuViewModel, ViewModelFactoryService } from '@nakedobjects/view-models';\nimport { PaneComponent } from '../pane/pane';\n\n@Component({\n    selector: 'nof-home',\n    templateUrl: 'home.component.html',\n    styleUrls: ['home.component.css'],\n    standalone: false\n})\nexport class HomeComponent extends PaneComponent {\n\n    constructor(urlManager: UrlManagerService,\n        activatedRoute: ActivatedRoute,\n        private readonly viewModelFactory: ViewModelFactoryService,\n        context: ContextService,\n        private readonly errorService: ErrorService) {\n        super(activatedRoute, urlManager, context);\n    }\n\n    // template API\n    get hasMenus() {\n        return !!this.menus;\n    }\n\n    get menuItems(): LinkViewModel[] {\n        return this.menus?.items ?? [];\n    }\n\n    selectedMenu: MenuViewModel | null = null;\n    selectedDialogId: string | null = null;\n\n    hasAuthorisedMenus = true;\n    isCreateNew = false;\n    toCreateClass?: string;\n\n    private menus?: MenusViewModel;\n\n    getMenus(paneRouteData: PaneRouteData) {\n        this.context.getMenus()\n            .then((menus: Ro.MenusRepresentation) => {\n                this.menus = this.viewModelFactory.menusViewModel(menus, paneRouteData);\n                this.hasAuthorisedMenus = this.menus && this.menus.items && this.menus.items.length > 0;\n            })\n            .catch((reject: ErrorWrapper) => {\n                this.errorService.handleError(reject);\n            });\n    }\n\n    getMenu(paneRouteData: PaneRouteData) {\n        const menuId = paneRouteData.menuId;\n        if (menuId) {\n            this.context.getMenu(menuId)\n                .then((menu: Ro.MenuRepresentation) => {\n                    this.selectedMenu = this.viewModelFactory.menuViewModel(menu, paneRouteData);\n                    this.selectedDialogId = paneRouteData.dialogId ?? null;\n                })\n                .catch((reject: ErrorWrapper) => {\n                    this.errorService.handleError(reject);\n                });\n        } else {\n            this.selectedMenu = null;\n            this.selectedDialogId = null;\n        }\n    }\n\n    protected setup(paneRouteData: PaneRouteData) {\n        this.getMenus(paneRouteData);\n        this.getMenu(paneRouteData);\n        this.isCreateNew = paneRouteData.interactionMode === InteractionMode.CreateNew;\n        this.toCreateClass = paneRouteData.toCreate;\n    }\n\n}\n","<ng-container>\n\t<ng-container *ngIf=\"!hasAuthorisedMenus\">\n\t\t<p class=\"startup-message\">Either no menu actions are available  -  or you are not authorized to see any of them.  Please contact the application administrator.</p>\n\t</ng-container>\n\t<ng-container *ngIf=\"hasAuthorisedMenus && !isCreateNew\">\n\t\t<div [attr.id]=\"paneIdName\" [ngClass]=\"paneType\">\n\t\t\t<!--TODO: This is the Single/Split definition-->\n\t\t\t<div class=\"home\">\n\t\t\t\t<div class=\"header\">\n\t\t\t\t\t<div class=\"title\">Home</div>\n\t\t\t\t\t<nof-menu-bar class=\"menus\" *ngIf=\"hasMenus\" [menus]=\"menuItems\"></nof-menu-bar>\n\t\t\t\t\t<div class=\"messages\"></div>\n\t\t\t\t</div>\n\t\t\t\t<nof-action-list *ngIf=\"selectedMenu\" [menuHolder]=\"selectedMenu\"></nof-action-list>\n\t\t\t\t<div class=\"main-column\">\n\t\t\t\t\t<nof-dialog *ngIf=\"selectedMenu\" [selectedDialogId]=\"selectedDialogId!\" [parentVM]=\"selectedMenu\"></nof-dialog>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</ng-container>\n\t<ng-container *ngIf=\"hasAuthorisedMenus && isCreateNew\">\n\t\t<div [attr.id]=\"paneIdName\" [ngClass]=\"paneType\">\n\t\t\t<!--TODO: This is the Single/Split definition-->\n\t\t\t<nof-create-new-dialog *ngIf=\"selectedMenu\" [selectedDialogId]=\"selectedDialogId!\" [parentMenu]=\"selectedMenu\" [toCreateClass]=\"toCreateClass!\"></nof-create-new-dialog>\n\t\t</div>\n\t</ng-container>\n\t<router-outlet *ngIf=\"hasAuthorisedMenus\" (activate)=\"onChild()\" (deactivate)=\"onChildless()\"></router-outlet>\n</ng-container>","import { AfterViewInit, Component, OnDestroy, QueryList, ViewChildren } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport * as Ro from '@nakedobjects/restful-objects';\nimport { ConfigService, ContextService, ErrorService, ErrorWrapper, PaneRouteData, UrlManagerService } from '@nakedobjects/services';\nimport { ActionViewModel, CollectionViewModel, DialogViewModel, MultiLineDialogViewModel, ParameterViewModel, ViewModelFactoryService } from '@nakedobjects/view-models';\nimport { Dictionary } from 'lodash';\nimport each from 'lodash-es/each';\nimport find from 'lodash-es/find';\nimport forEach from 'lodash-es/forEach';\nimport map from 'lodash-es/map';\nimport some from 'lodash-es/some';\nimport { SubscriptionLike as ISubscription } from 'rxjs';\nimport { createForm, safeUnsubscribe } from '../helpers-components';\nimport { PaneComponent } from '../pane/pane';\nimport { ParametersComponent } from '../parameters/parameters.component';\n\n@Component({\n    selector: 'nof-multi-line-dialog',\n    templateUrl: 'multi-line-dialog.component.html',\n    styleUrls: ['multi-line-dialog.component.css'],\n    standalone: false\n})\nexport class MultiLineDialogComponent extends PaneComponent implements AfterViewInit, OnDestroy {\n\n    constructor(\n        activatedRoute: ActivatedRoute,\n        urlManager: UrlManagerService,\n        private readonly viewModelFactory: ViewModelFactoryService,\n        context: ContextService,\n        private readonly error: ErrorService,\n        private readonly formBuilder: FormBuilder,\n        private readonly configService: ConfigService\n    ) {\n        super(activatedRoute, urlManager, context);\n    }\n\n    @ViewChildren(ParametersComponent)\n    parmComponents?: QueryList<ParametersComponent>;\n\n    private sub?: ISubscription;\n    dialog!: MultiLineDialogViewModel;\n\n    rowData!: { form: FormGroup, dialog: DialogViewModel, parms: Dictionary<ParameterViewModel>, sub: ISubscription }[];\n\n    form = (i: number) => {\n        const rowData = this.rowData[i];\n        return rowData.form;\n    };\n\n    get objectFriendlyName() {\n        return this.dialog.objectFriendlyName;\n    }\n\n    get objectTitle() {\n        return this.dialog.objectTitle;\n    }\n\n    get dialogTitle() {\n        return this.dialog.title;\n    }\n\n    get header() {\n        return this.dialog.header();\n    }\n\n    get rows() {\n        return this.dialog.dialogs;\n    }\n\n    parameters = (row: DialogViewModel) => row.parameters;\n\n    rowSubmitted = (row: DialogViewModel) => row.submitted;\n\n    rowTooltip = (row: DialogViewModel) => row.tooltip();\n\n    rowMessage = (row: DialogViewModel) => {\n        return row.getMessageOrSubmitted();\n    };\n\n    rowDisabled = (row: DialogViewModel) => {\n        return !row.clientValid() || row.submitted;\n    };\n\n    get count() {\n        return this.dialog.submittedCountMsg();\n    }\n\n    invokeAndAdd(index: number) {\n        const parms = this.rowData[index].parms;\n\n        forEach(parms,\n            p => {\n                const newValue = this.rowData[index].form.value[p.id];\n                p.setValueFromControl(newValue);\n            });\n\n        const addedIndex = this.dialog.invokeAndAdd(index);\n\n        if (addedIndex) {\n            this.rowData.push(this.createForm(this.dialog.dialogs[addedIndex]));\n        }\n    }\n\n    close = () => {\n        this.urlManager.popUrlState();\n    };\n\n    private createForm(dialog: DialogViewModel) {\n        return createForm(dialog, this.formBuilder);\n    }\n\n    setMultiLineDialog(holder: Ro.MenuRepresentation | Ro.DomainObjectRepresentation | CollectionViewModel,\n        newDialogId: string,\n        routeData: PaneRouteData,\n        actionViewModel?: ActionViewModel) {\n\n        const action = holder.actionMember(newDialogId)!;\n        this.context.getInvokableAction(action).\n            then(details => {\n\n                if (actionViewModel) {\n                    actionViewModel.makeInvokable(details);\n                }\n\n                this.dialog = this.viewModelFactory.multiLineDialogViewModel(routeData, details, holder);\n                this.rowData = map(this.dialog.dialogs, d => this.createForm(d));\n            }).\n            catch((reject: ErrorWrapper) => this.error.handleError(reject));\n    }\n\n    protected setup(routeData: PaneRouteData) {\n        if (routeData.menuId) {\n            this.context.getMenu(routeData.menuId)\n                .then((menu: Ro.MenuRepresentation) => {\n                    this.setMultiLineDialog(menu, routeData.dialogId!, routeData);\n                })\n                .catch((reject: ErrorWrapper) => {\n                    this.error.handleError(reject);\n                });\n        } else if (routeData.objectId) {\n            const oid = Ro.ObjectIdWrapper.fromObjectId(routeData.objectId, this.configService.config.keySeparator);\n            this.context.getObject(routeData.paneId, oid, routeData.interactionMode!).\n                then((object: Ro.DomainObjectRepresentation) => {\n\n                    const ovm = this.viewModelFactory.domainObjectViewModel(object, routeData, false);\n                    const newDialogId = routeData.dialogId;\n\n                    const lcaCollection = find(ovm.collections, c => c.hasMatchingLocallyContributedAction(newDialogId!));\n\n                    if (lcaCollection) {\n                        const actionViewModel = find(lcaCollection.actions, a => a.actionRep.actionId() === newDialogId);\n                        this.setMultiLineDialog(lcaCollection, newDialogId!, routeData, actionViewModel);\n                    } else {\n                        this.setMultiLineDialog(object, newDialogId!, routeData);\n                    }\n\n                }).\n                catch((reject: ErrorWrapper) => {\n                    this.error.handleError(reject);\n                });\n        }\n    }\n\n    focus(parms: QueryList<ParametersComponent>) {\n        if (parms && parms.length > 0) {\n            some(parms.toArray(), p => p.focus());\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.sub = this.parmComponents?.changes.subscribe(ql => this.focus(ql));\n    }\n\n    override ngOnDestroy(): void {\n        safeUnsubscribe(this.sub);\n        each(this.rowData, rd => safeUnsubscribe(rd.sub));\n        super.ngOnDestroy();\n    }\n}\n","<div id=\"pane1\" class=\"single\">\n    <div  *ngIf=\"dialog\" class=\"multilinedialog\">\n        <div class=\"header\">\n            <div class=\"type\">{{objectFriendlyName}}</div>\n            <div class=\"title\" gemini-drag tabindex=\"0\">\n                <div>{{objectTitle}}</div>\n                <div>{{dialogTitle}}</div>\n            </div>\n        </div>\n        <div class=\"columnHeader\" *ngFor=\"let column of header\">{{column}}</div>\n        <div class=\"lineDialog\" *ngFor=\"let row of rows; let i = index \">\n            <form *ngIf=\"!rowSubmitted(row)\" (ngSubmit)=\"invokeAndAdd(i)\" [formGroup]=\"form(i)\" autocomplete=\"off\">\n                <nof-parameters  class=\"parameters multilinedialog\" [parameters]=\"parameters(row)\" [parent]=\"row\" [form]=\"form(i)\"></nof-parameters>               \n                <input class=\"ok\" tabindex=\"0\" type=\"submit\" value=\"OK\" title=\"{{rowTooltip(row)}}\" [disabled]=\"rowDisabled(row)\" nofClick (leftClick)=\"invokeAndAdd(i)\" />\n                <div class=\"co-validation\">{{rowMessage(row)}}</div>\n            </form>\n            <nof-parameters *ngIf=\"rowSubmitted(row)\" class=\"parameters\" [parameters]=\"parameters(row)\" [parent]=\"row\"></nof-parameters>\n            <div *ngIf=\"rowSubmitted(row)\" class=\"co-validation\">{{rowMessage(row)}}</div>\n        </div>\n        <input class=\"close\" tabindex=\"0\" type=\"submit\" value=\"Close\" title=\"\" nofClick (leftClick)=\"close()\" />\n        <div class=\"count\">{{count}}</div>\n    </div>\n</div>\n","import { AfterViewInit, Component, OnDestroy, QueryList, ViewChildren, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ContextService, PaneRouteData, UrlManagerService } from '@nakedobjects/services';\nimport { RecentItemsViewModel, RecentItemViewModel, ViewModelFactoryService, DragAndDropService, SortType } from '@nakedobjects/view-models';\nimport { SubscriptionLike as ISubscription } from 'rxjs';\nimport { IActionHolder } from '../action/action.component';\nimport { safeUnsubscribe } from '../helpers-components';\nimport { PaneComponent } from '../pane/pane';\nimport { RowComponent } from '../row/row.component';\n\n@Component({\n    selector: 'nof-recent',\n    templateUrl: 'recent.component.html',\n    styleUrls: ['recent.component.css'],\n    standalone: false\n})\nexport class RecentComponent extends PaneComponent implements AfterViewInit, OnInit, OnDestroy {\n   \n\n   \n    constructor(\n        activatedRoute: ActivatedRoute,\n        urlManager: UrlManagerService,\n        context: ContextService,\n        private readonly viewModelFactory: ViewModelFactoryService,\n        private readonly dragAndDrop: DragAndDropService\n    ) {\n        super(activatedRoute, urlManager, context);\n    }\n\n    private clearButton: IActionHolder = {\n        value: 'Clear All',\n        doClick: () => this.clear(),\n        show: () => true,\n        disabled: () => this.clearDisabled(),\n        tempDisabled: () => null,\n        title: () => this.getMessage(this.clearDisabled(), 'clearAll'),\n        accesskey: 'c',\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private clearSelectedButton: IActionHolder = {\n        value: 'Clear Selected',\n        doClick: () => this.clearSelected(),\n        show: () => true,\n        disabled: () => this.clearSelectedDisabled(),\n        tempDisabled: () => null,\n        title: () => this.getMessage(this.clearSelectedDisabled(), 'clearSelected'),\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private sortByUsageButton: IActionHolder = {\n        value: 'Sort by Usage',\n        doClick: () => this.sortByUsage(),\n        show: () => true,\n        disabled: () => this.sortByUsageDisabled(),\n        tempDisabled: () => null,\n        title: () => this.getMessage(this.sortByUsageDisabled(), 'sortUsage'),\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private sortByTypeButton: IActionHolder = {\n        value: 'Sort by Type',\n        doClick: () => this.sortByType(),\n        show: () => true,\n        disabled: () => this.sortByTypeDisabled(),\n        tempDisabled: () => null,\n        title: () => this.getMessage(this.sortByTypeDisabled(), 'sortType'),\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n    private sortByTitleButton: IActionHolder = {\n        value: 'Sort by Title',\n        doClick: () => this.sortByTitle(),\n        show: () => true,\n        disabled: () => this.sortByTitleDisabled(),\n        tempDisabled: () => null,\n        title: () => this.getMessage(this.sortByTitleDisabled(), 'sortTitle'),\n        accesskey: null,\n        presentationHint: '',\n        showDialog: () => false\n    };\n\n\n    @ViewChildren('row')\n    actionChildren?: QueryList<RowComponent>;\n\n    private sub?: ISubscription;\n    private ddSub?: ISubscription;\n    dropZones: string[] = [];\n    recent?: RecentItemsViewModel;\n    paneRouteData?: PaneRouteData;\n\n    // template API\n\n    title = '';\n    items = (): RecentItemViewModel[] => this.recent?.items || [];\n\n    get actionHolders() {\n        return [this.sortByUsageButton, this.sortByTypeButton, this.sortByTitleButton, this.clearSelectedButton, this.clearButton];\n    }\n\n    hasItems() {\n        return this.recent && this.recent.items.length > 0;\n    }\n\n    private clear() {\n        this.recent?.clear();\n    }\n\n    private clearDisabled() {\n        return this.recent?.items.length === 0 ? true : null;\n    }\n\n    private clearSelected() {\n        this.recent?.clearSelected(this.paneRouteData);\n    }\n\n    private clearSelectedDisabled() {\n        return !this.paneRouteData?.selectedCollectionItems?.['']?.reduce((p, c) => p || c);\n    }\n\n    private sortByUsage() {\n        this.recent?.sort(SortType.ByUsage);\n    }\n\n    private sortByUsageDisabled() {\n        return this.recent?.currentSortType === SortType.ByUsage;\n    }\n\n    private sortByType() {\n        this.recent?.sort(SortType.ByType);\n    }\n\n    private sortByTypeDisabled() {\n        return this.recent?.currentSortType === SortType.ByType;\n    }\n\n    private sortByTitle() {\n        this.recent?.sort(SortType.ByTitle);\n    }\n\n    private sortByTitleDisabled() {\n        return this.recent?.currentSortType === SortType.ByTitle;\n    }\n\n    private getMessage(disabled: boolean | null, holder: string) {\n        switch (holder) {\n            case 'clearAll': return this.recent?.getRecentMessage(!!disabled) || '';\n            case 'clearSelected': return disabled ? 'Nothing selected' : 'Clear selected items';\n            case 'sortType': return disabled ? 'Currently sorted by Type' : 'Sort by Type';\n            case 'sortTitle': return disabled ? 'Currently sorted by Title' : 'Sort by Title';\n            case 'sortUsage': return disabled ? 'Currently sorted by when last used' : 'Sort by when last used';\n        }\n\n        return '';\n    }\n\n    protected override setup(routeData: PaneRouteData) {\n        this.paneRouteData = routeData;\n        if (!this.recent) {\n            this.recent = this.viewModelFactory.recentItemsViewModel(this.paneId!);\n            this.title = this.recent.title;\n        }\n    }\n\n    focusOnFirstRow(rows?: QueryList<RowComponent>) {\n        if (rows && rows.first) {\n            // until first element returns true\n            rows.first.focus();\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.focusOnFirstRow(this.actionChildren);\n        this.sub = this.actionChildren?.changes.subscribe((ql: QueryList<RowComponent>) => this.focusOnFirstRow(ql));\n    }\n\n    setDropZones(ids: string[]) {\n        setTimeout(() => this.dropZones = ids);\n    }\n\n    override ngOnInit() {\n        this.ddSub = this.dragAndDrop.dropZoneIds$.subscribe(ids => this.setDropZones(ids || []));\n        super.ngOnInit();\n    }\n\n    override ngOnDestroy() {\n        safeUnsubscribe(this.sub);\n        safeUnsubscribe(this.ddSub);\n        super.ngOnDestroy();\n    }\n}\n","<div [attr.id]=\"paneIdName\" [ngClass]=\"paneType\">\n    <div class=\"recent\">\n        <div class=\"header\">\n            <div class=\"title\">{{title}}</div>\n            <nof-action-bar [actions]=\"actionHolders\"></nof-action-bar>\n        </div>\n        <ng-container *ngIf=\"hasItems()\">\n            <div class=\"collection\">\n                <table>\n                    <tbody cdkDropList [cdkDropListConnectedTo]=\"dropZones\" [cdkDropListOrientation]=\"'horizontal'\">\n                        <tr #row *ngFor=\"let item of items(); let i = index\" cdkDrag [cdkDragData]=\"item\" nof-row [item]=\"item\" [row]=\"i\" [withCheckbox]=\"true\" [isTable]=\"true\"></tr>\n                    </tbody>\n                </table>\n            </div>\n        </ng-container>\n    </div>\n</div>\n<router-outlet (activate)=\"onChild()\" (deactivate)=\"onChildless()\"></router-outlet>\n","import { Component } from '@angular/core';\nimport { AuthService, ConfigService, ContextService } from '@nakedobjects/services';\n\n@Component({\n    selector: 'nof-login',\n    templateUrl: 'login.component.html',\n    styleUrls: ['login.component.css'],\n    standalone: false\n})\nexport class LoginComponent {\n\n    constructor(\n        public readonly context: ContextService,\n        public readonly auth: AuthService,\n        public readonly configService: ConfigService\n    ) { }\n}\n","<div id=\"pane1\" class=\"single\">\n    <div class=\"login\">\n        <div class=\"header\">\n            <div class=\"title\">Welcome to {{configService.config.applicationName}}</div>\n        </div>\n        <ng-container *ngIf=\"!context.clearingDataFlag\">\n            <p>Clicking the login button will generate a pop-up managed by the 'Auth0 service.</p>\n            <p>This will allow you to login using your Google, or other recognised account.</p>\n            <button class=\"btn btn-primary btn-margin\" (click)=\"auth.login()\">Log In</button>\n        </ng-container>\n        <ng-container *ngIf=\"context.clearingDataFlag\">\n            <p>Please wait while caches are cleared</p>\n        </ng-container>\n    </div>\n</div>","import { Location } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Component, OnInit } from '@angular/core';\nimport { AuthService, ConfigService, ContextService } from '@nakedobjects/services';\n\n@Component({\n    selector: 'nof-logoff',\n    templateUrl: 'logoff.component.html',\n    styleUrls: ['logoff.component.css'],\n    standalone: false\n})\nexport class LogoffComponent implements OnInit {\n\n    constructor(\n        private readonly context: ContextService,\n        private readonly authService: AuthService,\n        readonly configService: ConfigService,\n        private readonly http: HttpClient,\n        private readonly location: Location,\n    ) { }\n\n    userId = '';\n\n    isActive = true;\n\n    userIsLoggedIn() {\n        return this.authService.isAuthenticated();\n    }\n\n    cancel() {\n        this.isActive = false;\n        this.location.back();\n    }\n\n    logoff() {\n        this.isActive = false;\n        const serverLogoffUrl = this.configService.config.logoffUrl;\n        const postLogoffUrl = this.configService.config.postLogoffUrl;\n\n        if (serverLogoffUrl) {\n\n            const args = {\n                withCredentials: true\n            };\n\n            this.http.post(this.configService.config.logoffUrl, args);\n        }\n\n        // logoff client without waiting for server\n        this.authService.logout();\n\n        // if set this will reload page and cause all cached data to be lost.\n        if (postLogoffUrl) {\n            this.context.clearingDataFlag = true;\n            window.location.href = postLogoffUrl;\n        }\n    }\n\n    ngOnInit() {\n        this.context.getUser().then(u => this.userId = u.userName() || 'Unknown');\n    }\n}\n","<div id=\"pane1\" class=\"single\">\n    <div class=\"logoff\">\n        <div class=\"header\">\n            <div class=\"title\">Log Off {{configService.config.applicationName}}</div>\n        </div>\n        <ng-container *ngIf=\"userIsLoggedIn()\">\n            <p>Please confirm log off</p>\n            <p>User : {{userId}}</p>\n            <button class=\"btn btn-primary btn-margin\" type=\"button\" value=\"Log Off\" (click)=\"logoff()\">Log Off</button>\n        </ng-container>\n        <ng-container *ngIf=\"!userIsLoggedIn()\">\n            <p>No user is logged in</p>\n        </ng-container>\n        <button class=\"btn btn-primary btn-margin\" type=\"button\" value=\"Cancel\" (click)=\"cancel()\">Cancel</button>\n    </div>\n</div>","import { Component } from '@angular/core';\n\n@Component({\n    selector: 'nof-callback',\n    templateUrl: './callback.component.html',\n    styleUrls: ['./callback.component.css'],\n    standalone: false\n})\nexport class CallbackComponent {\n\n}\n","<div>\n  <p>Authorizing...</p>\n</div>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { HttpClientModule } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { RouterModule } from '@angular/router';\nimport { ActionBarComponent } from './action-bar/action-bar.component';\nimport { ActionListComponent } from './action-list/action-list.component';\nimport { ActionComponent } from './action/action.component';\nimport { ApplicationPropertiesComponent } from './application-properties/application-properties.component';\nimport { AttachmentPropertyComponent } from './attachment-property/attachment-property.component';\nimport { AttachmentComponent } from './attachment/attachment.component';\nimport { AutoCompleteComponent } from './auto-complete/auto-complete.component';\nimport { CallbackComponent } from './callback/callback.component';\nimport { ClearDirective } from './clear.directive';\nimport { ClickDirective } from './click.directive';\nimport { CollectionComponent } from './collection/collection.component';\nimport { CollectionsComponent } from './collections/collections.component';\nimport { CustomComponentConfigService } from './custom-component-config.service';\nimport { CustomComponentService } from './custom-component.service';\nimport { DatePickerFacadeComponent } from './date-picker-facade/date-picker-facade.component';\nimport { DatePickerComponent } from './date-picker/date-picker.component';\nimport { DialogComponent } from './dialog/dialog.component';\nimport { DynamicErrorComponent } from './dynamic-error/dynamic-error.component';\nimport { DynamicListComponent } from './dynamic-list/dynamic-list.component';\nimport { DynamicObjectComponent } from './dynamic-object/dynamic-object.component';\nimport { EditParameterComponent } from './edit-parameter/edit-parameter.component';\nimport { EditPropertyComponent } from './edit-property/edit-property.component';\nimport { ErrorComponent } from './error/error.component';\nimport { FooterComponent } from './footer/footer.component';\nimport { HeaderComponent } from './header/header.component';\nimport { HomeComponent } from './home/home.component';\nimport { ListComponent } from './list/list.component';\nimport { LoginComponent } from './login/login.component';\nimport { LogoffComponent } from './logoff/logoff.component';\nimport { MenuBarComponent } from './menu-bar/menu-bar.component';\nimport { MultiLineDialogComponent } from './multi-line-dialog/multi-line-dialog.component';\nimport { ObjectNotFoundErrorComponent } from './object-not-found-error/object-not-found-error.component';\nimport { ObjectComponent } from './object/object.component';\nimport { ParametersComponent } from './parameters/parameters.component';\nimport { PropertiesComponent } from './properties/properties.component';\nimport { RecentComponent } from './recent/recent.component';\nimport { RowComponent } from './row/row.component';\nimport { TimePickerFacadeComponent } from './time-picker-facade/time-picker-facade.component';\nimport { TimePickerComponent } from './time-picker/time-picker.component';\nimport { ViewParameterComponent } from './view-parameter/view-parameter.component';\nimport { ViewPropertyComponent } from './view-property/view-property.component';\nimport { EditDialogComponent } from './edit-dialog/edit-dialog.component';\nimport { CreateNewDialogComponent } from './create-new-dialog/create-new-dialog.component';\n\n@NgModule({\n    declarations: [\n        FooterComponent,\n        HomeComponent,\n        ObjectComponent,\n        ListComponent,\n        ErrorComponent,\n        ActionListComponent,\n        ActionBarComponent,\n        PropertiesComponent,\n        CollectionsComponent,\n        DialogComponent,\n        EditDialogComponent,\n        CreateNewDialogComponent,\n        ParametersComponent,\n        EditPropertyComponent,\n        ViewPropertyComponent,\n        EditParameterComponent,\n        RecentComponent,\n        ApplicationPropertiesComponent,\n        ClickDirective,\n        ClearDirective,\n        CollectionComponent,\n        AttachmentComponent,\n        MultiLineDialogComponent,\n        ViewParameterComponent,\n        MenuBarComponent,\n        ActionComponent,\n        DynamicObjectComponent,\n        DynamicListComponent,\n        AttachmentPropertyComponent,\n        DynamicErrorComponent,\n        RowComponent,\n        HeaderComponent,\n        LoginComponent,\n        LogoffComponent,\n        DatePickerFacadeComponent,\n        AutoCompleteComponent,\n        DatePickerComponent,\n        TimePickerComponent,\n        TimePickerFacadeComponent,\n        ObjectNotFoundErrorComponent,\n        CallbackComponent,\n    ],\n    imports: [\n        BrowserModule,\n        FormsModule,\n        ReactiveFormsModule,\n        HttpClientModule,\n        RouterModule,\n        DragDropModule,\n    ],\n    exports: [\n        FooterComponent,\n        HomeComponent,\n        ObjectComponent,\n        ListComponent,\n        ErrorComponent,\n        ActionListComponent,\n        ActionBarComponent,\n        PropertiesComponent,\n        CollectionsComponent,\n        DialogComponent,\n        EditDialogComponent,\n        CreateNewDialogComponent,\n        ParametersComponent,\n        EditPropertyComponent,\n        ViewPropertyComponent,\n        EditParameterComponent,\n        RecentComponent,\n        ApplicationPropertiesComponent,\n        ClickDirective,\n        ClearDirective,\n        CollectionComponent,\n        AttachmentComponent,\n        MultiLineDialogComponent,\n        ViewParameterComponent,\n        MenuBarComponent,\n        ActionComponent,\n        DynamicObjectComponent,\n        DynamicListComponent,\n        AttachmentPropertyComponent,\n        DynamicErrorComponent,\n        RowComponent,\n        HeaderComponent,\n        LoginComponent,\n        LogoffComponent,\n        DatePickerFacadeComponent,\n        AutoCompleteComponent,\n        DatePickerComponent,\n        TimePickerComponent,\n        TimePickerFacadeComponent,\n        ObjectNotFoundErrorComponent,\n        CallbackComponent,\n    ],\n})\nexport class LibModule {\n    public static forRoot(): ModuleWithProviders<LibModule> {\n\n        return {\n            ngModule: LibModule,\n            providers: [\n                CustomComponentService,\n                // to configure custom components create implementation of ICustomComponentConfigService and bind in here\n                { provide: CustomComponentConfigService, useClass: CustomComponentConfigService },\n            ]\n        };\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2.ClickDirective","i2.ActionComponent","i1","i4","i2","i3.ClickDirective","i3","i3.ClearDirective","i3.DatePickerComponent","i5.ClearDirective","i2.ClearDirective","i2.TimePickerComponent","i5","i6.ClearDirective","i7.DatePickerFacadeComponent","i8.AutoCompleteComponent","i9.TimePickerFacadeComponent","i2.EditParameterComponent","i3.ViewParameterComponent","i5.ParametersComponent","i6.ClickDirective","i4.ClickDirective","i5.ActionBarComponent","i6.DialogComponent","i7.RowComponent","i8.HeaderComponent","i2.CollectionComponent","i6.ActionListComponent","i7.ActionBarComponent","i8.DialogComponent","i9.RowComponent","i10.HeaderComponent","i7.AttachmentPropertyComponent","i8.DatePickerFacadeComponent","i9.AutoCompleteComponent","i10.TimePickerFacadeComponent","i5.ClickDirective","i6.AttachmentPropertyComponent","i2.EditPropertyComponent","i3.ViewPropertyComponent","i5.ViewPropertyComponent","i6.EditParameterComponent","i7.ClickDirective","i6.ViewPropertyComponent","i7.EditParameterComponent","i6","i7.ActionListComponent","i8.ActionBarComponent","i9.PropertiesComponent","i10.CollectionsComponent","i11.DialogComponent","i12.EditDialogComponent","i13.CreateNewDialogComponent","i2.CustomComponentConfigService","i2.CustomComponentService","i3.CustomComponentService","i3.ActionComponent","i5.ActionListComponent","i7.CreateNewDialogComponent","i8.MenuBarComponent","i6.ParametersComponent","i6.ActionBarComponent"],"mappings":"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"}