@quenk/frontend 0.21.2 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/app/scene/dialog.d.ts +75 -0
- package/lib/app/scene/dialog.js +102 -0
- package/lib/app/scene/dialog.js.map +1 -0
- package/lib/app/scene/form/index.d.ts +2 -2
- package/lib/app/scene/form/index.js +2 -2
- package/lib/app/scene/form/index.js.map +1 -1
- package/lib/app/scene/index.d.ts +1 -0
- package/lib/app/scene/index.js +4 -2
- package/lib/app/scene/index.js.map +1 -1
- package/package.json +2 -2
- package/lib/app/scene/dialog/alert.d.ts +0 -13
- package/lib/app/scene/dialog/alert.js +0 -18
- package/lib/app/scene/dialog/alert.js.map +0 -1
- package/lib/app/scene/dialog/confirm.d.ts +0 -39
- package/lib/app/scene/dialog/confirm.js +0 -36
- package/lib/app/scene/dialog/confirm.js.map +0 -1
- package/lib/app/scene/dialog/index.d.ts +0 -65
- package/lib/app/scene/dialog/index.js +0 -71
- package/lib/app/scene/dialog/index.js.map +0 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { View } from '@quenk/wml';
|
|
2
|
+
import { Maybe } from '@quenk/noni/lib/data/maybe';
|
|
3
|
+
import { Runtime } from '@quenk/potoo/lib/actor/system/vm/runtime';
|
|
4
|
+
import { Address } from '@quenk/potoo/lib/actor/address';
|
|
5
|
+
import { Fork } from '@quenk/potoo/lib/actor/local';
|
|
6
|
+
import { Scene } from './';
|
|
7
|
+
/**
|
|
8
|
+
* DialogName indicates the name of a dialog.
|
|
9
|
+
*/
|
|
10
|
+
export type DialogName = string;
|
|
11
|
+
/**
|
|
12
|
+
* DialogEvent is the base class of event classes used to indicate a change in
|
|
13
|
+
* a dialog's lifecycle.
|
|
14
|
+
*
|
|
15
|
+
* A basic dialog's lifecycle is open -> closed. However no events are fired for
|
|
16
|
+
* open.
|
|
17
|
+
*/
|
|
18
|
+
export declare abstract class DialogEvent {
|
|
19
|
+
name: DialogName;
|
|
20
|
+
constructor(name: DialogName);
|
|
21
|
+
}
|
|
22
|
+
export declare class Dismiss extends DialogEvent {
|
|
23
|
+
}
|
|
24
|
+
export declare class Accept extends DialogEvent {
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Dialog provides an actor meant to serve as the "controller" for a dialog
|
|
28
|
+
* view displayed to the user.
|
|
29
|
+
*
|
|
30
|
+
* It does not concern itself with the details of actually getting the view on
|
|
31
|
+
* screen, instead it leaves that up to the provided display actor's address.
|
|
32
|
+
*/
|
|
33
|
+
export declare abstract class Dialog<T> extends Fork<T> implements Scene {
|
|
34
|
+
runtime: Runtime;
|
|
35
|
+
display: Address;
|
|
36
|
+
constructor(runtime: Runtime, display: Address);
|
|
37
|
+
name: string;
|
|
38
|
+
abstract view: View;
|
|
39
|
+
/**
|
|
40
|
+
* accept the dialog.
|
|
41
|
+
*
|
|
42
|
+
* This will bring the receiveUntil loop to an end returning a positive
|
|
43
|
+
* result to the parent.
|
|
44
|
+
*/
|
|
45
|
+
accept: () => Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* dismiss the dialog.
|
|
48
|
+
*
|
|
49
|
+
* This will bring the receiveUntil loop to an end returning a negative
|
|
50
|
+
* result to the parent.
|
|
51
|
+
*/
|
|
52
|
+
dismiss: () => Promise<void>;
|
|
53
|
+
show(): Promise<void>;
|
|
54
|
+
onRun(): Promise<void>;
|
|
55
|
+
abstract run(): Promise<T>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* SimpleDialog simply returns a boolean indicating how the dialog was closed.
|
|
59
|
+
*/
|
|
60
|
+
export declare abstract class SimpleDialog extends Dialog<boolean> implements Scene {
|
|
61
|
+
run(): Promise<boolean>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Prompt is for dialogs that collect information.
|
|
65
|
+
*
|
|
66
|
+
* A default value can be specified and will be wrapped in a Maybe when
|
|
67
|
+
* the dialog is closed.
|
|
68
|
+
*/
|
|
69
|
+
export declare abstract class Prompt<T> extends Dialog<Maybe<T>> implements Scene {
|
|
70
|
+
runtime: Runtime;
|
|
71
|
+
display: Address;
|
|
72
|
+
value?: T | undefined;
|
|
73
|
+
constructor(runtime: Runtime, display: Address, value?: T | undefined);
|
|
74
|
+
run(): Promise<Maybe<T>>;
|
|
75
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Prompt = exports.SimpleDialog = exports.Dialog = exports.Accept = exports.Dismiss = exports.DialogEvent = void 0;
|
|
4
|
+
const maybe_1 = require("@quenk/noni/lib/data/maybe");
|
|
5
|
+
const local_1 = require("@quenk/potoo/lib/actor/local");
|
|
6
|
+
const display_1 = require("../display");
|
|
7
|
+
const _1 = require("./");
|
|
8
|
+
/**
|
|
9
|
+
* DialogEvent is the base class of event classes used to indicate a change in
|
|
10
|
+
* a dialog's lifecycle.
|
|
11
|
+
*
|
|
12
|
+
* A basic dialog's lifecycle is open -> closed. However no events are fired for
|
|
13
|
+
* open.
|
|
14
|
+
*/
|
|
15
|
+
class DialogEvent {
|
|
16
|
+
constructor(name) {
|
|
17
|
+
this.name = name;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.DialogEvent = DialogEvent;
|
|
21
|
+
class Dismiss extends DialogEvent {
|
|
22
|
+
}
|
|
23
|
+
exports.Dismiss = Dismiss;
|
|
24
|
+
class Accept extends DialogEvent {
|
|
25
|
+
}
|
|
26
|
+
exports.Accept = Accept;
|
|
27
|
+
/**
|
|
28
|
+
* Dialog provides an actor meant to serve as the "controller" for a dialog
|
|
29
|
+
* view displayed to the user.
|
|
30
|
+
*
|
|
31
|
+
* It does not concern itself with the details of actually getting the view on
|
|
32
|
+
* screen, instead it leaves that up to the provided display actor's address.
|
|
33
|
+
*/
|
|
34
|
+
class Dialog extends local_1.Fork {
|
|
35
|
+
constructor(runtime, display) {
|
|
36
|
+
super(runtime);
|
|
37
|
+
this.runtime = runtime;
|
|
38
|
+
this.display = display;
|
|
39
|
+
this.name = Dialog.name;
|
|
40
|
+
/**
|
|
41
|
+
* accept the dialog.
|
|
42
|
+
*
|
|
43
|
+
* This will bring the receiveUntil loop to an end returning a positive
|
|
44
|
+
* result to the parent.
|
|
45
|
+
*/
|
|
46
|
+
this.accept = async () => {
|
|
47
|
+
await this.tell(this.self, new Accept(this.self));
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* dismiss the dialog.
|
|
51
|
+
*
|
|
52
|
+
* This will bring the receiveUntil loop to an end returning a negative
|
|
53
|
+
* result to the parent.
|
|
54
|
+
*/
|
|
55
|
+
this.dismiss = async () => {
|
|
56
|
+
await this.tell(this.self, new Dismiss(this.self));
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
async show() {
|
|
60
|
+
return (0, _1.show)(this);
|
|
61
|
+
}
|
|
62
|
+
async onRun() { }
|
|
63
|
+
}
|
|
64
|
+
exports.Dialog = Dialog;
|
|
65
|
+
/**
|
|
66
|
+
* SimpleDialog simply returns a boolean indicating how the dialog was closed.
|
|
67
|
+
*/
|
|
68
|
+
class SimpleDialog extends Dialog {
|
|
69
|
+
async run() {
|
|
70
|
+
await this.onRun();
|
|
71
|
+
await this.show();
|
|
72
|
+
let result = await this.receiveUntil(m => m instanceof DialogEvent);
|
|
73
|
+
await this.tell(this.display, new display_1.Close(this.self));
|
|
74
|
+
return (result instanceof Accept);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.SimpleDialog = SimpleDialog;
|
|
78
|
+
/**
|
|
79
|
+
* Prompt is for dialogs that collect information.
|
|
80
|
+
*
|
|
81
|
+
* A default value can be specified and will be wrapped in a Maybe when
|
|
82
|
+
* the dialog is closed.
|
|
83
|
+
*/
|
|
84
|
+
class Prompt extends Dialog {
|
|
85
|
+
constructor(runtime, display, value) {
|
|
86
|
+
super(runtime, display);
|
|
87
|
+
this.runtime = runtime;
|
|
88
|
+
this.display = display;
|
|
89
|
+
this.value = value;
|
|
90
|
+
}
|
|
91
|
+
async run() {
|
|
92
|
+
await this.onRun();
|
|
93
|
+
await this.show();
|
|
94
|
+
let result = await this.receiveUntil(m => m instanceof DialogEvent);
|
|
95
|
+
await this.tell(this.display, new display_1.Close(this.self));
|
|
96
|
+
if (result instanceof Dismiss)
|
|
97
|
+
return maybe_1.Maybe.nothing();
|
|
98
|
+
return maybe_1.Maybe.fromNullable(this.value);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.Prompt = Prompt;
|
|
102
|
+
//# sourceMappingURL=dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../src/app/scene/dialog.ts"],"names":[],"mappings":";;;AAEA,sDAAiD;AAIjD,wDAAoD;AAEpD,wCAAmC;AACnC,yBAAiC;AAOjC;;;;;;GAMG;AACH,MAAsB,WAAW;IAC7B,YAAmB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;CAC1C;AAFD,kCAEC;AAED,MAAa,OAAQ,SAAQ,WAAW;CAAG;AAA3C,0BAA2C;AAE3C,MAAa,MAAO,SAAQ,WAAW;CAAG;AAA1C,wBAA0C;AAE1C;;;;;;GAMG;AACH,MAAsB,MAAU,SAAQ,YAAO;IAC3C,YACW,OAAgB,EAChB,OAAgB;QAEvB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,YAAO,GAAP,OAAO,CAAS;QAChB,YAAO,GAAP,OAAO,CAAS;QAK3B,SAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAIrB;;;;;WAKG;QACD,WAAM,GAAG,KAAK,IAAI,EAAE;YAChB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC,CAAA;QAED;;;;;WAKG;QACH,YAAO,GAAG,KAAK,IAAI,EAAE;YACnB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC,CAAA;IAxBD,CAAC;IA0BD,KAAK,CAAC,IAAI;QACN,OAAO,IAAA,OAAI,EAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,KAAK,KAAI,CAAC;CAGnB;AAvCD,wBAuCC;AAED;;GAEG;AACH,MAAsB,YAAa,SAAQ,MAAe;IAEtD,KAAK,CAAC,GAAG;QACL,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAEnB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAc,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,WAAW,CAAC,CAAC;QAEjF,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpD,OAAO,CAAC,MAAM,YAAY,MAAM,CAAC,CAAA;IACrC,CAAC;CACJ;AAbD,oCAaC;AAED;;;;;GAKG;AACH,MAAsB,MAAU,SAAQ,MAAgB;IACpD,YACW,OAAgB,EAChB,OAAgB,EAChB,KAAS;QAEhB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAJjB,YAAO,GAAP,OAAO,CAAS;QAChB,YAAO,GAAP,OAAO,CAAS;QAChB,UAAK,GAAL,KAAK,CAAI;IAGpB,CAAC;IAED,KAAK,CAAC,GAAG;QACL,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAEnB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,IAAI,MAAM,GAAI,MAAM,IAAI,CAAC,YAAY,CAAc,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,WAAW,CAAC,CAAC;QAElF,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpD,IAAG,MAAM,YAAY,OAAO;YAAE,OAAO,aAAK,CAAC,OAAO,EAAE,CAAC;QAErD,OAAO,aAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;CACJ;AAtBD,wBAsBC"}
|
|
@@ -118,7 +118,7 @@ export interface FormScene<T extends Object> extends AppScene {
|
|
|
118
118
|
*
|
|
119
119
|
* Success should result in the form exiting.
|
|
120
120
|
*/
|
|
121
|
-
save(
|
|
121
|
+
save(): void;
|
|
122
122
|
}
|
|
123
123
|
/**
|
|
124
124
|
* AppFormScene provides an abstract implementation of the FormScene interface.
|
|
@@ -178,5 +178,5 @@ export declare abstract class AppFormScene<T extends Object> extends AppScene im
|
|
|
178
178
|
* the removal of the view. Note: instead of overriding this method,
|
|
179
179
|
* override execute instead unless you want to change its behaviour.
|
|
180
180
|
*/
|
|
181
|
-
save(
|
|
181
|
+
save(): Promise<void>;
|
|
182
182
|
}
|
|
@@ -126,10 +126,10 @@ class AppFormScene extends __1.AppScene {
|
|
|
126
126
|
* the removal of the view. Note: instead of overriding this method,
|
|
127
127
|
* override execute instead unless you want to change its behaviour.
|
|
128
128
|
*/
|
|
129
|
-
async save(
|
|
129
|
+
async save() {
|
|
130
130
|
this.errors = {};
|
|
131
131
|
let result = await this.doSave();
|
|
132
|
-
await this.tell(this.owner, new FormState(this.self, true,
|
|
132
|
+
await this.tell(this.owner, new FormState(this.self, true, this.getValues(), result));
|
|
133
133
|
await this.exit();
|
|
134
134
|
}
|
|
135
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/app/scene/form/index.ts"],"names":[],"mappings":";;;AAAA,wDAAmE;AACnE,sDAAsD;AAEtD,oDAAgD;AAChD,6DAA8D;AAM9D,2BAA+B;AAuD/B;;;GAGG;AACH,MAAa,KAAK;CAAG;AAArB,sBAAqB;AAErB;;GAEG;AACH,MAAa,IAAI;CAAG;AAApB,oBAAoB;AAEpB;;;;;GAKG;AACH,MAAa,SAAS;IAClB;;;;;;OAMG;IACH,YACW,IAAa,EACb,EAAW,EACX,OAAe,EAAE,EACjB,MAAoB;QAHpB,SAAI,GAAJ,IAAI,CAAS;QACb,OAAE,GAAF,EAAE,CAAS;QACX,SAAI,GAAJ,IAAI,CAAa;QACjB,WAAM,GAAN,MAAM,CAAc;IAC5B,CAAC;CACP;AAdD,8BAcC;AAgDD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAsB,YAClB,SAAQ,YAAQ;IAGhB,YACW,OAAgB,EAChB,KAAc,EACd,OAAgB,EAChB,QAAoB,EAAE;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QALR,YAAO,GAAP,OAAO,CAAS;QAChB,UAAK,GAAL,KAAK,CAAS;QACd,YAAO,GAAP,OAAO,CAAS;QAChB,UAAK,GAAL,KAAK,CAAiB;QAKjC;;;WAGG;QACH,kBAAa,GAAgB,EAAE,CAAC;QAEhC,WAAM,GAAe,EAAE,CAAC;IARxB,CAAC;IAUD,SAAS;QACL,OAAO;YACH,IAAI,eAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;gBACrB,IAAI,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC,CAAC;YAEF,IAAI,eAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;gBACpB,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC;YAEF,IAAI,eAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAG,EAAE,EAAE,CAAC,CAAC,EAAE;gBAC3C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAa,CAAC,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC,CAAC;SACL,CAAC;IACN,CAAC;IAED,GAAG,CAAC,IAAe,EAAE,KAAiB;QAClC,IAAI,CAAC,IAAA,gBAAQ,EAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;YAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9D,IAAI,CAAC,KAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAEnC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,SAAS;QACL,OAAU,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,iBAAiB;QACb,OAAmB,CACf,IAAA,eAAM,EAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAChC,IAAA,gBAAQ,EAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAClC,CACJ,CAAC;IACN,CAAC;IAED,SAAS;QACL,OAAO,CAAC,IAAA,cAAK,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK;QACP,MAAM,IAAI,CAAC,IAAI,CACX,IAAI,CAAC,KAAK,EACV,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CACpD,CAAC;QAEF,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACR,OAAO,EAAE,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,IAAI
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/app/scene/form/index.ts"],"names":[],"mappings":"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"}
|
package/lib/app/scene/index.d.ts
CHANGED
package/lib/app/scene/index.js
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* usually send this message as part of their run() method.
|
|
28
28
|
*/
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.AppScene = void 0;
|
|
30
|
+
exports.show = exports.AppScene = void 0;
|
|
31
31
|
const resident_1 = require("@quenk/potoo/lib/actor/framework/resident");
|
|
32
32
|
const display_1 = require("../display");
|
|
33
33
|
/**
|
|
@@ -40,11 +40,13 @@ class AppScene extends resident_1.Immutable {
|
|
|
40
40
|
* show the AppScene by sending a message to the display.
|
|
41
41
|
*/
|
|
42
42
|
async show() {
|
|
43
|
-
|
|
43
|
+
return (0, exports.show)(this);
|
|
44
44
|
}
|
|
45
45
|
async run() {
|
|
46
46
|
await this.show();
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
exports.AppScene = AppScene;
|
|
50
|
+
const show = (scene) => scene.tell(scene.display, new display_1.Show(scene.name, scene.view, scene.self));
|
|
51
|
+
exports.show = show;
|
|
50
52
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/scene/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;;AAIH,wEAAsE;AAItE,wCAAkC;AAyBlC;;;;GAIG;AACH,MAAsB,QAAS,SAAQ,oBAAS;IAO5C;;OAEG;IACH,KAAK,CAAC,IAAI;QACN,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/scene/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;;AAIH,wEAAsE;AAItE,wCAAkC;AAyBlC;;;;GAIG;AACH,MAAsB,QAAS,SAAQ,oBAAS;IAO5C;;OAEG;IACH,KAAK,CAAC,IAAI;QACN,OAAO,IAAA,YAAI,EAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,GAAG;QACL,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;CACJ;AAjBD,4BAiBC;AAEM,MAAM,IAAI,GAAG,CAAC,KAAY,EAAE,EAAE,CACjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,cAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAD/D,QAAA,IAAI,QAC2D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenk/frontend",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "Actor oriented client side toolkit for Quenk Technologies.",
|
|
5
5
|
"author": [
|
|
6
6
|
"Quenk Technologies Limited <info@quenk.com> (https://quenk.com)"
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@quenk/jhr": "^2.6.26",
|
|
26
26
|
"@quenk/noni": "^1.46.1",
|
|
27
|
-
"@quenk/potoo": "^4.
|
|
27
|
+
"@quenk/potoo": "^4.2.0",
|
|
28
28
|
"@quenk/preconditions": "^5.5.0",
|
|
29
29
|
"@quenk/search-filters": "^2.8.0",
|
|
30
30
|
"@quenk/wml-widgets": "^1.29.4",
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Address } from '@quenk/potoo/lib/actor/address';
|
|
2
|
-
import { Runtime } from '@quenk/potoo/lib/actor/system/vm/runtime';
|
|
3
|
-
import { Dialog, DialogEventTarget } from '.';
|
|
4
|
-
/**
|
|
5
|
-
* AlertDialog provides a dialog for displaying an alert message.
|
|
6
|
-
*/
|
|
7
|
-
export declare abstract class AlertDialog extends Dialog {
|
|
8
|
-
runtime: Runtime;
|
|
9
|
-
display: Address;
|
|
10
|
-
message: string;
|
|
11
|
-
target: DialogEventTarget;
|
|
12
|
-
constructor(runtime: Runtime, display: Address, message: string, target?: DialogEventTarget);
|
|
13
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AlertDialog = void 0;
|
|
4
|
-
const _1 = require(".");
|
|
5
|
-
/**
|
|
6
|
-
* AlertDialog provides a dialog for displaying an alert message.
|
|
7
|
-
*/
|
|
8
|
-
class AlertDialog extends _1.Dialog {
|
|
9
|
-
constructor(runtime, display, message, target = '?') {
|
|
10
|
-
super(runtime, display, target);
|
|
11
|
-
this.runtime = runtime;
|
|
12
|
-
this.display = display;
|
|
13
|
-
this.message = message;
|
|
14
|
-
this.target = target;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.AlertDialog = AlertDialog;
|
|
18
|
-
//# sourceMappingURL=alert.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"alert.js","sourceRoot":"","sources":["../../../../src/app/scene/dialog/alert.ts"],"names":[],"mappings":";;;AAGA,wBAA8C;AAE9C;;GAEG;AACH,MAAsB,WAAY,SAAQ,SAAM;IAC5C,YACW,OAAgB,EAChB,OAAgB,EAChB,OAAe,EACf,SAA4B,GAAG;QAEtC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QALzB,YAAO,GAAP,OAAO,CAAS;QAChB,YAAO,GAAP,OAAO,CAAS;QAChB,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAyB;IAG1C,CAAC;CACJ;AATD,kCASC"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { Address } from '@quenk/potoo/lib/actor/address';
|
|
2
|
-
import { Runtime } from '@quenk/potoo/lib/actor/system/vm/runtime';
|
|
3
|
-
import { Dialog, DialogEventFunc, DialogEventHandler, DialogEvent } from './';
|
|
4
|
-
/**
|
|
5
|
-
* ConfirmDialogEventHandler is the allowed types for confirm dialog event
|
|
6
|
-
* targets.
|
|
7
|
-
*/
|
|
8
|
-
export type ConfirmDialogEventTarget = DialogEventFunc | Address | DialogEventHandler;
|
|
9
|
-
/**
|
|
10
|
-
* ConfirmDialogEventHandler is an object that can receive confirm dialog events.
|
|
11
|
-
*/
|
|
12
|
-
export interface ConfirmDialogEventHandler extends DialogEventHandler {
|
|
13
|
-
/**
|
|
14
|
-
* onAccept is called when the dialog is closed positively..
|
|
15
|
-
*/
|
|
16
|
-
onAccept(e: DialogConfirmed): void;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* DialogConfirmed indicates
|
|
20
|
-
*/
|
|
21
|
-
export declare class DialogConfirmed extends DialogEvent {
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* ConfirmDialog provides a dialog actor oriented towards the confirmation of
|
|
25
|
-
* some action or event.
|
|
26
|
-
*
|
|
27
|
-
* Use it to display forms or information that needs to be confirmed before
|
|
28
|
-
* committed. Use the accept() method for confirmation or close() for cancel.
|
|
29
|
-
*/
|
|
30
|
-
export declare abstract class ConfirmDialog extends Dialog {
|
|
31
|
-
runtime: Runtime;
|
|
32
|
-
display: Address;
|
|
33
|
-
target: ConfirmDialogEventTarget;
|
|
34
|
-
constructor(runtime: Runtime, display: Address, target?: ConfirmDialogEventTarget);
|
|
35
|
-
/**
|
|
36
|
-
* confirm the dialog firing an event to the target.
|
|
37
|
-
*/
|
|
38
|
-
confirm(): Promise<void>;
|
|
39
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConfirmDialog = exports.DialogConfirmed = void 0;
|
|
4
|
-
const display_1 = require("../../display");
|
|
5
|
-
const _1 = require("./");
|
|
6
|
-
/**
|
|
7
|
-
* DialogConfirmed indicates
|
|
8
|
-
*/
|
|
9
|
-
class DialogConfirmed extends _1.DialogEvent {
|
|
10
|
-
}
|
|
11
|
-
exports.DialogConfirmed = DialogConfirmed;
|
|
12
|
-
/**
|
|
13
|
-
* ConfirmDialog provides a dialog actor oriented towards the confirmation of
|
|
14
|
-
* some action or event.
|
|
15
|
-
*
|
|
16
|
-
* Use it to display forms or information that needs to be confirmed before
|
|
17
|
-
* committed. Use the accept() method for confirmation or close() for cancel.
|
|
18
|
-
*/
|
|
19
|
-
class ConfirmDialog extends _1.Dialog {
|
|
20
|
-
constructor(runtime, display, target = '?') {
|
|
21
|
-
super(runtime, display, target);
|
|
22
|
-
this.runtime = runtime;
|
|
23
|
-
this.display = display;
|
|
24
|
-
this.target = target;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* confirm the dialog firing an event to the target.
|
|
28
|
-
*/
|
|
29
|
-
async confirm() {
|
|
30
|
-
await this.tell(this.display, new display_1.Close(this.name));
|
|
31
|
-
this.fire(new DialogConfirmed(this.name));
|
|
32
|
-
this.exit();
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
exports.ConfirmDialog = ConfirmDialog;
|
|
36
|
-
//# sourceMappingURL=confirm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../../../src/app/scene/dialog/confirm.ts"],"names":[],"mappings":";;;AAGA,2CAAsC;AACtC,yBAA8E;AAqB9E;;GAEG;AACH,MAAa,eAAgB,SAAQ,cAAW;CAAG;AAAnD,0CAAmD;AAEnD;;;;;;GAMG;AACH,MAAsB,aAAc,SAAQ,SAAM;IAC9C,YACW,OAAgB,EAChB,OAAgB,EAChB,SAAmC,GAAG;QAE7C,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAJzB,YAAO,GAAP,OAAO,CAAS;QAChB,YAAO,GAAP,OAAO,CAAS;QAChB,WAAM,GAAN,MAAM,CAAgC;IAGjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACT,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;CACJ;AAjBD,sCAiBC"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { Runtime } from '@quenk/potoo/lib/actor/system/vm/runtime';
|
|
2
|
-
import { Address } from '@quenk/potoo/lib/actor/address';
|
|
3
|
-
import { AppScene } from '../';
|
|
4
|
-
/**
|
|
5
|
-
* DialogName indicates the name of a dialog.
|
|
6
|
-
*/
|
|
7
|
-
export type DialogName = string;
|
|
8
|
-
/**
|
|
9
|
-
* DialogEventTarget is the allowed types for dialog event targets.
|
|
10
|
-
*/
|
|
11
|
-
export type DialogEventTarget = DialogEventFunc | Address | DialogEventHandler;
|
|
12
|
-
/**
|
|
13
|
-
* DialogEventFunc can be invoked to receive dialog events.
|
|
14
|
-
*/
|
|
15
|
-
export type DialogEventFunc = (e: DialogEvent) => void;
|
|
16
|
-
/**
|
|
17
|
-
* DialogEventHandler is an object that can receive dialog events.
|
|
18
|
-
*/
|
|
19
|
-
export interface DialogEventHandler {
|
|
20
|
-
/**
|
|
21
|
-
* onClose is invoked when the dialog is closed.
|
|
22
|
-
*/
|
|
23
|
-
onClose(e: DialogEvent): void;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* DialogEvent is the base class of event classes used to indicate a change in
|
|
27
|
-
* a dialog's lifecycle.
|
|
28
|
-
*
|
|
29
|
-
* A basic dialog's lifecycle is open -> closed. However no events are fired for
|
|
30
|
-
* open.
|
|
31
|
-
*/
|
|
32
|
-
export declare abstract class DialogEvent {
|
|
33
|
-
name: DialogName;
|
|
34
|
-
constructor(name: DialogName);
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* DialogClosed indicates a dialog has been closed.
|
|
38
|
-
*/
|
|
39
|
-
export declare class DialogClosed extends DialogEvent {
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Dialog provides an actor meant to serve as the "controller" for a dialog
|
|
43
|
-
* view displayed to the user.
|
|
44
|
-
*
|
|
45
|
-
* It does not concern itself with the details of actually getting the view on
|
|
46
|
-
* screen, instead it leaves that up to the provided display actor's address.
|
|
47
|
-
* If a handler is provided, it will receive an event when the dialog closes.
|
|
48
|
-
*/
|
|
49
|
-
export declare abstract class Dialog extends AppScene {
|
|
50
|
-
runtime: Runtime;
|
|
51
|
-
display: Address;
|
|
52
|
-
target: DialogEventTarget;
|
|
53
|
-
constructor(runtime: Runtime, display: Address, target?: DialogEventTarget);
|
|
54
|
-
/**
|
|
55
|
-
* fire an event to the [[DialogEventTarget]].
|
|
56
|
-
*/
|
|
57
|
-
fire(e: DialogEvent): Promise<void>;
|
|
58
|
-
/**
|
|
59
|
-
* close this dialog.
|
|
60
|
-
*
|
|
61
|
-
* Tells the display to close the view and will exit this actor.
|
|
62
|
-
*/
|
|
63
|
-
close(): Promise<void>;
|
|
64
|
-
run(): Promise<void>;
|
|
65
|
-
}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Dialog = exports.DialogClosed = exports.DialogEvent = void 0;
|
|
4
|
-
const type_1 = require("@quenk/noni/lib/data/type");
|
|
5
|
-
const display_1 = require("../../display");
|
|
6
|
-
const __1 = require("../");
|
|
7
|
-
/**
|
|
8
|
-
* DialogEvent is the base class of event classes used to indicate a change in
|
|
9
|
-
* a dialog's lifecycle.
|
|
10
|
-
*
|
|
11
|
-
* A basic dialog's lifecycle is open -> closed. However no events are fired for
|
|
12
|
-
* open.
|
|
13
|
-
*/
|
|
14
|
-
class DialogEvent {
|
|
15
|
-
constructor(name) {
|
|
16
|
-
this.name = name;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.DialogEvent = DialogEvent;
|
|
20
|
-
/**
|
|
21
|
-
* DialogClosed indicates a dialog has been closed.
|
|
22
|
-
*/
|
|
23
|
-
class DialogClosed extends DialogEvent {
|
|
24
|
-
}
|
|
25
|
-
exports.DialogClosed = DialogClosed;
|
|
26
|
-
/**
|
|
27
|
-
* Dialog provides an actor meant to serve as the "controller" for a dialog
|
|
28
|
-
* view displayed to the user.
|
|
29
|
-
*
|
|
30
|
-
* It does not concern itself with the details of actually getting the view on
|
|
31
|
-
* screen, instead it leaves that up to the provided display actor's address.
|
|
32
|
-
* If a handler is provided, it will receive an event when the dialog closes.
|
|
33
|
-
*/
|
|
34
|
-
class Dialog extends __1.AppScene {
|
|
35
|
-
constructor(runtime, display, target = '?') {
|
|
36
|
-
super(runtime);
|
|
37
|
-
this.runtime = runtime;
|
|
38
|
-
this.display = display;
|
|
39
|
-
this.target = target;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* fire an event to the [[DialogEventTarget]].
|
|
43
|
-
*/
|
|
44
|
-
async fire(e) {
|
|
45
|
-
if ((0, type_1.isString)(this.target)) {
|
|
46
|
-
await this.tell(this.target, e);
|
|
47
|
-
}
|
|
48
|
-
else if ((0, type_1.isFunction)(this.target)) {
|
|
49
|
-
this.target(e);
|
|
50
|
-
}
|
|
51
|
-
else if ((0, type_1.isObject)(this.target)) {
|
|
52
|
-
// Todo: This is too specific, maybe onEvent instead?
|
|
53
|
-
this.target.onClose(e);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* close this dialog.
|
|
58
|
-
*
|
|
59
|
-
* Tells the display to close the view and will exit this actor.
|
|
60
|
-
*/
|
|
61
|
-
async close() {
|
|
62
|
-
await this.tell(this.display, new display_1.Close(this.name));
|
|
63
|
-
await this.fire(new DialogClosed(this.name));
|
|
64
|
-
this.exit();
|
|
65
|
-
}
|
|
66
|
-
async run() {
|
|
67
|
-
await this.tell(this.display, new display_1.Show(this.name, this.view, this.self));
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
exports.Dialog = Dialog;
|
|
71
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/app/scene/dialog/index.ts"],"names":[],"mappings":";;;AAAA,oDAA2E;AAK3E,2CAA4C;AAC5C,2BAA+B;AA2B/B;;;;;;GAMG;AACH,MAAsB,WAAW;IAC7B,YAAmB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;CAC1C;AAFD,kCAEC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,WAAW;CAAG;AAAhD,oCAAgD;AAEhD;;;;;;;GAOG;AACH,MAAsB,MAAO,SAAQ,YAAQ;IACzC,YACW,OAAgB,EAChB,OAAgB,EAChB,SAA4B,GAAG;QAEtC,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,YAAO,GAAP,OAAO,CAAS;QAChB,YAAO,GAAP,OAAO,CAAS;QAChB,WAAM,GAAN,MAAM,CAAyB;IAG1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,CAAc;QACrB,IAAI,IAAA,eAAQ,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,IAAA,iBAAU,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,IAAA,eAAQ,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,qDAAqD;YAChC,IAAI,CAAC,MAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK;QACP,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,GAAG;QACL,MAAM,IAAI,CAAC,IAAI,CACX,IAAI,CAAC,OAAO,EACZ,IAAI,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAC5C,CAAC;IACN,CAAC;CACJ;AAxCD,wBAwCC"}
|