UNPKG

nakedobjects.spa

Version:

Single Page Application client for a Naked Objects application.

63 lines 2.31 kB
import forEach from 'lodash/forEach'; import map from 'lodash/map'; import zipObject from 'lodash/zipObject'; import mapValues from 'lodash/mapValues'; export function safeUnsubscribe(sub) { if (sub) { sub.unsubscribe(); } } export function focus(renderer, element) { setTimeout(function () { return renderer.invokeElementMethod(element.nativeElement, "focus"); }); return true; } export function createForm(dialog, formBuilder) { var pps = dialog.parameters; var parms = zipObject(map(pps, function (p) { return p.id; }), map(pps, function (p) { return p; })); var controls = mapValues(parms, function (p) { return [p.getValueForControl(), function (a) { return p.validator(a); }]; }); var form = formBuilder.group(controls); var sub = form.valueChanges.subscribe(function (data) { // cache parm values forEach(data, function (v, k) { return parms[k].setValueFromControl(v); }); dialog.setParms(); }); return { form: form, dialog: dialog, parms: parms, sub: sub }; } export function accept(droppableVm, component) { return function (draggableVm) { if (draggableVm) { draggableVm.canDropOn(droppableVm.returnType). then(function (canDrop) { return component.canDrop = canDrop; }). catch(function () { return component.canDrop = false; }); return true; } return false; }; } ; export function dropOn(draggableVm, droppable, component) { if (component.canDrop) { droppable.drop(draggableVm) .then(function (success) { component.control.setValue(droppable.selectedChoice); }); } } export function paste(event, droppable, component, get, clear) { var vKeyCode = 86; var deleteKeyCode = 46; if (event && (event.keyCode === vKeyCode && event.ctrlKey)) { var cvm = get(); if (cvm) { droppable.drop(cvm) .then(function (success) { component.control.setValue(droppable.selectedChoice); }); event.preventDefault(); } } if (event && event.keyCode === deleteKeyCode) { clear(); } } //# sourceMappingURL=helpers-components.js.map