@researchdatabox/sails-ng-common 0.0.1-beta.9873 → 0.0.1-beta.9950
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/dist/src/config/component/cancel-button.model.d.ts +2 -0
- package/dist/src/config/component/cancel-button.model.js +3 -1
- package/dist/src/config/component/cancel-button.outline.d.ts +10 -0
- package/dist/src/config/component/delete-button.model.d.ts +4 -4
- package/dist/src/config/component/delete-button.model.js +5 -5
- package/dist/src/config/component/delete-button.outline.d.ts +32 -4
- package/dist/src/config/component/repeatable.model.d.ts +9 -8
- package/dist/src/config/component/repeatable.model.js +5 -2
- package/dist/src/config/component/repeatable.outline.d.ts +8 -7
- package/dist/src/config/component/repeatable.outline.js +1 -1
- package/dist/src/config/component/save-button.outline.d.ts +2 -0
- package/dist/src/jsonata-helpers.d.ts +3 -2
- package/dist/src/jsonata-helpers.js +37 -4
- package/dist/src/template.outline.d.ts +1 -0
- package/package.json +1 -1
|
@@ -9,6 +9,8 @@ export declare class CancelButtonFieldComponentConfig extends FieldComponentConf
|
|
|
9
9
|
cancelButtonMessage?: string;
|
|
10
10
|
confirmButtonMessage?: string;
|
|
11
11
|
buttonCssClasses?: string;
|
|
12
|
+
redirectLocation?: string;
|
|
13
|
+
redirectDelaySeconds?: number;
|
|
12
14
|
constructor();
|
|
13
15
|
}
|
|
14
16
|
export declare class CancelButtonFieldComponentDefinition extends FieldComponentDefinition implements CancelButtonFieldComponentDefinitionOutline {
|
|
@@ -12,6 +12,8 @@ class CancelButtonFieldComponentConfig extends field_component_model_1.FieldComp
|
|
|
12
12
|
cancelButtonMessage;
|
|
13
13
|
confirmButtonMessage;
|
|
14
14
|
buttonCssClasses;
|
|
15
|
+
redirectLocation;
|
|
16
|
+
redirectDelaySeconds;
|
|
15
17
|
constructor() {
|
|
16
18
|
super();
|
|
17
19
|
}
|
|
@@ -53,4 +55,4 @@ exports.CancelButtonDefaults = {
|
|
|
53
55
|
},
|
|
54
56
|
},
|
|
55
57
|
};
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsLWJ1dHRvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb25maWcvY29tcG9uZW50L2NhbmNlbC1idXR0b24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0VBQTBGO0FBRTFGLGtFQUFrRTtBQUVsRSxzREFBd0g7QUFDeEgsbUVBS2lDO0FBRWpDLDZCQUE2QjtBQUU3QixNQUFhLGdDQUNYLFNBQVEsNENBQW9CO0lBRTVCLG1CQUFtQixDQUFVO0lBQzdCLGlCQUFpQixDQUFVO0lBQzNCLG1CQUFtQixDQUFVO0lBQzdCLG9CQUFvQixDQUFVO0lBQzlCLGdCQUFnQixDQUFVO0lBQzFCLGdCQUFnQixDQUFVO0lBQzFCLG9CQUFvQixDQUFVO0lBRTlCO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0NBQ0Y7QUFkRCw0RUFjQztBQUVELE1BQWEsb0NBQ1gsU0FBUSxnREFBd0I7SUFHaEMsS0FBSyxHQUFHLGlEQUF5QixDQUFDO0lBQ2xDLE1BQU0sQ0FBMkM7SUFFakQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQWlDO1FBQzVDLE1BQU0sT0FBTyxDQUFDLHlDQUF5QyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7Q0FDRjtBQWRELG9GQWNDO0FBRUQsa0NBQWtDO0FBRWxDLE1BQWEsbUNBQ1gsU0FBUSw4Q0FBdUI7SUFHL0IsU0FBUyxDQUErQztJQUN4RCxLQUFLLENBQVM7SUFDZCxNQUFNLENBQTBDO0lBRWhEO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFpQztRQUM1QyxNQUFNLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0Y7QUFmRCxrRkFlQztBQUVZLFFBQUEsZUFBZSxHQUFHO0lBQzdCLEVBQUUsSUFBSSxFQUFFLHlDQUF3QixFQUFFLEdBQUcsRUFBRSxnQ0FBZ0MsRUFBRTtJQUN6RSxFQUFFLElBQUksRUFBRSw2Q0FBNEIsRUFBRSxHQUFHLEVBQUUsb0NBQW9DLEVBQUUsS0FBSyxFQUFFLGlEQUF5QixFQUFFO0lBQ25ILEVBQUUsSUFBSSxFQUFFLDRDQUEyQixFQUFFLEdBQUcsRUFBRSxtQ0FBbUMsRUFBRSxLQUFLLEVBQUUsaURBQXlCLEVBQUU7Q0FDbEgsQ0FBQztBQUNXLFFBQUEsb0JBQW9CLEdBQUc7SUFDbEMsQ0FBQyw0Q0FBMkIsQ0FBQyxFQUFFO1FBQzdCLENBQUMsaURBQXlCLENBQUMsRUFBRTtZQUMzQixDQUFDLDZDQUE0QixDQUFDLEVBQUUsaURBQXlCO1NBQzFEO0tBQ0Y7Q0FDRixDQUFDIn0=
|
|
@@ -27,6 +27,16 @@ export interface CancelButtonFieldComponentConfigFrame extends FieldComponentCon
|
|
|
27
27
|
* Example: 'btn-warning' or 'btn btn-warning'.
|
|
28
28
|
*/
|
|
29
29
|
buttonCssClasses?: string;
|
|
30
|
+
/**
|
|
31
|
+
* The relative url to redirect to.
|
|
32
|
+
* Leave empty to use the browser's location.back.
|
|
33
|
+
*/
|
|
34
|
+
redirectLocation?: string;
|
|
35
|
+
/**
|
|
36
|
+
* The delay before redirecting.
|
|
37
|
+
* Default is 3 seconds delay.
|
|
38
|
+
*/
|
|
39
|
+
redirectDelaySeconds?: number;
|
|
30
40
|
}
|
|
31
41
|
export interface CancelButtonFieldComponentConfigOutline extends CancelButtonFieldComponentConfigFrame, FieldComponentConfigOutline {
|
|
32
42
|
}
|
|
@@ -4,14 +4,14 @@ import { FormComponentDefinition } from '../form-component.model';
|
|
|
4
4
|
import { FormConfigVisitorOutline } from '../visitor/base.outline';
|
|
5
5
|
import { DeleteButtonFieldComponentConfigOutline, DeleteButtonFieldComponentDefinitionOutline, DeleteButtonFormComponentDefinitionOutline } from './delete-button.outline';
|
|
6
6
|
export declare class DeleteButtonFieldComponentConfig extends FieldComponentConfig implements DeleteButtonFieldComponentConfigOutline {
|
|
7
|
-
buttonCssClasses?: string;
|
|
8
|
-
closeOnDelete?: boolean;
|
|
9
|
-
redirectLocation?: string;
|
|
10
|
-
redirectDelaySeconds?: number;
|
|
11
7
|
confirmationMessage?: string;
|
|
12
8
|
confirmationTitle?: string;
|
|
13
9
|
cancelButtonMessage?: string;
|
|
14
10
|
confirmButtonMessage?: string;
|
|
11
|
+
buttonCssClasses?: string;
|
|
12
|
+
closeOnDelete?: boolean;
|
|
13
|
+
redirectLocation?: string;
|
|
14
|
+
redirectDelaySeconds?: number;
|
|
15
15
|
}
|
|
16
16
|
export declare class DeleteButtonFieldComponentDefinition extends FieldComponentDefinition implements DeleteButtonFieldComponentDefinitionOutline {
|
|
17
17
|
class: "DeleteButtonComponent";
|
|
@@ -6,14 +6,14 @@ const form_component_model_1 = require("../form-component.model");
|
|
|
6
6
|
const shared_outline_1 = require("../shared.outline");
|
|
7
7
|
const delete_button_outline_1 = require("./delete-button.outline");
|
|
8
8
|
class DeleteButtonFieldComponentConfig extends field_component_model_1.FieldComponentConfig {
|
|
9
|
-
buttonCssClasses;
|
|
10
|
-
closeOnDelete;
|
|
11
|
-
redirectLocation;
|
|
12
|
-
redirectDelaySeconds;
|
|
13
9
|
confirmationMessage;
|
|
14
10
|
confirmationTitle;
|
|
15
11
|
cancelButtonMessage;
|
|
16
12
|
confirmButtonMessage;
|
|
13
|
+
buttonCssClasses;
|
|
14
|
+
closeOnDelete;
|
|
15
|
+
redirectLocation;
|
|
16
|
+
redirectDelaySeconds;
|
|
17
17
|
}
|
|
18
18
|
exports.DeleteButtonFieldComponentConfig = DeleteButtonFieldComponentConfig;
|
|
19
19
|
class DeleteButtonFieldComponentDefinition extends field_component_model_1.FieldComponentDefinition {
|
|
@@ -45,4 +45,4 @@ exports.DeleteButtonDefaults = {
|
|
|
45
45
|
},
|
|
46
46
|
},
|
|
47
47
|
};
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWJ1dHRvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb25maWcvY29tcG9uZW50L2RlbGV0ZS1idXR0b24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0VBQTBGO0FBRTFGLGtFQUFrRTtBQUVsRSxzREFBd0g7QUFDeEgsbUVBS2lDO0FBRWpDLE1BQWEsZ0NBQWlDLFNBQVEsNENBQW9CO0lBQ3hFLG1CQUFtQixDQUFVO0lBQzdCLGlCQUFpQixDQUFVO0lBQzNCLG1CQUFtQixDQUFVO0lBQzdCLG9CQUFvQixDQUFVO0lBQzlCLGdCQUFnQixDQUFVO0lBQzFCLGFBQWEsQ0FBVztJQUN4QixnQkFBZ0IsQ0FBVTtJQUMxQixvQkFBb0IsQ0FBVTtDQUMvQjtBQVRELDRFQVNDO0FBRUQsTUFBYSxvQ0FDWCxTQUFRLGdEQUF3QjtJQUdoQyxLQUFLLEdBQUcsaURBQXlCLENBQUM7SUFDbEMsTUFBTSxDQUEyQztJQUVqRCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQWlDO1FBQzVDLE1BQU0sT0FBTyxDQUFDLHlDQUF5QyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7Q0FDRjtBQVZELG9GQVVDO0FBRUQsTUFBYSxtQ0FDWCxTQUFRLDhDQUF1QjtJQUcvQixTQUFTLENBQStDO0lBQ3hELEtBQUssQ0FBUztJQUNkLE1BQU0sQ0FBMEM7SUFFaEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFpQztRQUM1QyxNQUFNLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0Y7QUFYRCxrRkFXQztBQUVZLFFBQUEsZUFBZSxHQUFHO0lBQzdCLEVBQUUsSUFBSSxFQUFFLHlDQUF3QixFQUFFLEdBQUcsRUFBRSxnQ0FBZ0MsRUFBRTtJQUN6RSxFQUFFLElBQUksRUFBRSw2Q0FBNEIsRUFBRSxHQUFHLEVBQUUsb0NBQW9DLEVBQUUsS0FBSyxFQUFFLGlEQUF5QixFQUFFO0lBQ25ILEVBQUUsSUFBSSxFQUFFLDRDQUEyQixFQUFFLEdBQUcsRUFBRSxtQ0FBbUMsRUFBRSxLQUFLLEVBQUUsaURBQXlCLEVBQUU7Q0FDbEgsQ0FBQztBQUVXLFFBQUEsb0JBQW9CLEdBQUc7SUFDbEMsQ0FBQyw0Q0FBMkIsQ0FBQyxFQUFFO1FBQzdCLENBQUMsaURBQXlCLENBQUMsRUFBRTtZQUMzQixDQUFDLDZDQUE0QixDQUFDLEVBQUUsaURBQXlCO1NBQzFEO0tBQ0Y7Q0FDRixDQUFDIn0=
|
|
@@ -5,14 +5,42 @@ import { FieldComponentConfigFrameKindType, FieldComponentConfigKindType, FieldC
|
|
|
5
5
|
export declare const DeleteButtonComponentName: "DeleteButtonComponent";
|
|
6
6
|
export type DeleteButtonComponentNameType = typeof DeleteButtonComponentName;
|
|
7
7
|
export interface DeleteButtonFieldComponentConfigFrame extends FieldComponentConfigFrame {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
/**
|
|
9
|
+
* An optional confirmation message shown to the user before cancelling.
|
|
10
|
+
* If not set, the cancel action proceeds without confirmation.
|
|
11
|
+
*/
|
|
12
12
|
confirmationMessage?: string;
|
|
13
|
+
/**
|
|
14
|
+
* The title of the confirmation dialog.
|
|
15
|
+
*/
|
|
13
16
|
confirmationTitle?: string;
|
|
17
|
+
/**
|
|
18
|
+
* The label for the cancel button in the confirmation dialog.
|
|
19
|
+
*/
|
|
14
20
|
cancelButtonMessage?: string;
|
|
21
|
+
/**
|
|
22
|
+
* The label for the confirm button in the confirmation dialog.
|
|
23
|
+
*/
|
|
15
24
|
confirmButtonMessage?: string;
|
|
25
|
+
/**
|
|
26
|
+
* CSS classes to apply to the main cancel button element.
|
|
27
|
+
* Example: 'btn-warning' or 'btn btn-warning'.
|
|
28
|
+
*/
|
|
29
|
+
buttonCssClasses?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Whether to 'close' the form by redirecting on a successful delete. Default false.
|
|
32
|
+
*/
|
|
33
|
+
closeOnDelete?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* The relative url to redirect to on a successful delete if closeOnDelete is true.
|
|
36
|
+
* Leave empty to use the browser's location.back.
|
|
37
|
+
*/
|
|
38
|
+
redirectLocation?: string;
|
|
39
|
+
/**
|
|
40
|
+
* The delay before redirecting on a successful delete if closeOnDelete is true.
|
|
41
|
+
* Default is 3 seconds delay.
|
|
42
|
+
*/
|
|
43
|
+
redirectDelaySeconds?: number;
|
|
16
44
|
}
|
|
17
45
|
export interface DeleteButtonFieldComponentConfigOutline extends DeleteButtonFieldComponentConfigFrame, FieldComponentConfigOutline {
|
|
18
46
|
}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { FieldComponentConfig, FieldComponentDefinition } from
|
|
2
|
-
import { FieldModelConfig, FieldModelDefinition } from
|
|
3
|
-
import { FormComponentDefinition } from
|
|
4
|
-
import { FieldLayoutDefinition } from
|
|
5
|
-
import { ActionRowFieldLayoutConfig } from
|
|
6
|
-
import { FormConfigVisitorOutline } from
|
|
7
|
-
import { RepeatableElementFieldLayoutConfigOutline, RepeatableElementFieldLayoutDefinitionOutline, RepeatableFieldComponentConfigOutline, RepeatableFieldComponentDefinitionOutline, RepeatableFieldModelConfigOutline, RepeatableFieldModelDefinitionOutline, RepeatableFormComponentDefinitionOutline, RepeatableModelValueType } from
|
|
8
|
-
import { AvailableFieldLayoutDefinitionOutlines, AvailableFormComponentDefinitionOutlines } from
|
|
1
|
+
import { FieldComponentConfig, FieldComponentDefinition } from '../field-component.model';
|
|
2
|
+
import { FieldModelConfig, FieldModelDefinition } from '../field-model.model';
|
|
3
|
+
import { FormComponentDefinition } from '../form-component.model';
|
|
4
|
+
import { FieldLayoutDefinition } from '../field-layout.model';
|
|
5
|
+
import { ActionRowFieldLayoutConfig } from './action-row-layout.model';
|
|
6
|
+
import { FormConfigVisitorOutline } from '../visitor/base.outline';
|
|
7
|
+
import { RepeatableElementFieldLayoutConfigOutline, RepeatableElementFieldLayoutDefinitionOutline, RepeatableFieldComponentConfigOutline, RepeatableFieldComponentDefinitionOutline, RepeatableFieldModelConfigOutline, RepeatableFieldModelDefinitionOutline, RepeatableFormComponentDefinitionOutline, RepeatableModelValueType } from './repeatable.outline';
|
|
8
|
+
import { AvailableFieldLayoutDefinitionOutlines, AvailableFormComponentDefinitionOutlines } from '../dictionary.outline';
|
|
9
9
|
export declare class RepeatableFieldComponentConfig extends FieldComponentConfig implements RepeatableFieldComponentConfigOutline {
|
|
10
10
|
elementTemplate: AvailableFormComponentDefinitionOutlines;
|
|
11
11
|
addButtonShow: boolean;
|
|
12
12
|
allowZeroRows: boolean;
|
|
13
13
|
hideWhenZeroRows: boolean;
|
|
14
|
+
canSort?: boolean;
|
|
14
15
|
constructor();
|
|
15
16
|
/**
|
|
16
17
|
* Create a unique ID using the current timestamp and a random number.
|
|
@@ -14,6 +14,7 @@ class RepeatableFieldComponentConfig extends field_component_model_1.FieldCompon
|
|
|
14
14
|
addButtonShow = true;
|
|
15
15
|
allowZeroRows = false;
|
|
16
16
|
hideWhenZeroRows = false;
|
|
17
|
+
canSort;
|
|
17
18
|
constructor() {
|
|
18
19
|
super();
|
|
19
20
|
}
|
|
@@ -24,7 +25,9 @@ class RepeatableFieldComponentConfig extends field_component_model_1.FieldCompon
|
|
|
24
25
|
* It is for distinguishing the repeatable element entries.
|
|
25
26
|
*/
|
|
26
27
|
static getLocalUID() {
|
|
27
|
-
const randomNumber = Math.floor(Math.random() * 10000)
|
|
28
|
+
const randomNumber = Math.floor(Math.random() * 10000)
|
|
29
|
+
.toString()
|
|
30
|
+
.padStart(5, '0');
|
|
28
31
|
return `${Date.now()}-${randomNumber}`;
|
|
29
32
|
}
|
|
30
33
|
}
|
|
@@ -106,4 +109,4 @@ exports.RepeatableDefaults = {
|
|
|
106
109
|
},
|
|
107
110
|
},
|
|
108
111
|
};
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0YWJsZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb25maWcvY29tcG9uZW50L3JlcGVhdGFibGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0VBQTBGO0FBQzFGLDREQUE4RTtBQUM5RSxrRUFBa0U7QUFDbEUsOERBQWlGO0FBQ2pGLHVFQUF1RTtBQUV2RSxzREFRMkI7QUFDM0IsNkRBWThCO0FBTTlCLDBCQUEwQjtBQUMxQixNQUFhLDhCQUNYLFNBQVEsNENBQW9CO0lBRzVCLGVBQWUsQ0FBNEM7SUFDM0QsYUFBYSxHQUFHLElBQUksQ0FBQztJQUNyQixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUN6QixPQUFPLENBQVc7SUFFbEI7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxXQUFXO1FBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQzthQUNuRCxRQUFRLEVBQUU7YUFDVixRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQztDQUNGO0FBMUJELHdFQTBCQztBQUVELE1BQWEsa0NBQ1gsU0FBUSxnREFBd0I7SUFHaEMsS0FBSyxHQUFHLDRDQUF1QixDQUFDO0lBQ2hDLE1BQU0sQ0FBeUM7SUFFL0M7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQWlDO1FBQzVDLE1BQU0sT0FBTyxDQUFDLHVDQUF1QyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRjtBQWRELGdGQWNDO0FB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
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { FieldLayoutConfigFrame, FieldLayoutConfigOutline, FieldLayoutDefinitionFrame, FieldLayoutDefinitionOutline } from
|
|
2
|
-
import { ActionRowFieldLayoutConfigFrame, ActionRowFieldLayoutConfigOutline } from
|
|
3
|
-
import { AvailableFieldLayoutDefinitionFrames, AvailableFieldLayoutDefinitionOutlines, AvailableFormComponentDefinitionFrames, AvailableFormComponentDefinitionOutlines } from
|
|
4
|
-
import { FormComponentDefinitionFrame, FormComponentDefinitionOutline } from
|
|
5
|
-
import { FieldModelConfigFrame, FieldModelConfigOutline, FieldModelDefinitionFrame, FieldModelDefinitionOutline } from
|
|
6
|
-
import { FieldComponentConfigFrame, FieldComponentConfigOutline, FieldComponentDefinitionFrame, FieldComponentDefinitionOutline } from
|
|
7
|
-
import { FieldComponentConfigFrameKindType, FieldComponentConfigKindType, FieldComponentDefinitionFrameKindType, FieldComponentDefinitionKindType, FieldLayoutConfigFrameKindType, FieldLayoutConfigKindType, FieldLayoutDefinitionFrameKindType, FieldLayoutDefinitionKindType, FieldModelConfigFrameKindType, FieldModelConfigKindType, FieldModelDefinitionFrameKindType, FieldModelDefinitionKindType, FormComponentDefinitionFrameKindType, FormComponentDefinitionKindType } from
|
|
1
|
+
import { FieldLayoutConfigFrame, FieldLayoutConfigOutline, FieldLayoutDefinitionFrame, FieldLayoutDefinitionOutline } from '../field-layout.outline';
|
|
2
|
+
import { ActionRowFieldLayoutConfigFrame, ActionRowFieldLayoutConfigOutline } from './action-row-layout.outline';
|
|
3
|
+
import { AvailableFieldLayoutDefinitionFrames, AvailableFieldLayoutDefinitionOutlines, AvailableFormComponentDefinitionFrames, AvailableFormComponentDefinitionOutlines } from '../dictionary.outline';
|
|
4
|
+
import { FormComponentDefinitionFrame, FormComponentDefinitionOutline } from '../form-component.outline';
|
|
5
|
+
import { FieldModelConfigFrame, FieldModelConfigOutline, FieldModelDefinitionFrame, FieldModelDefinitionOutline } from '../field-model.outline';
|
|
6
|
+
import { FieldComponentConfigFrame, FieldComponentConfigOutline, FieldComponentDefinitionFrame, FieldComponentDefinitionOutline } from '../field-component.outline';
|
|
7
|
+
import { FieldComponentConfigFrameKindType, FieldComponentConfigKindType, FieldComponentDefinitionFrameKindType, FieldComponentDefinitionKindType, FieldLayoutConfigFrameKindType, FieldLayoutConfigKindType, FieldLayoutDefinitionFrameKindType, FieldLayoutDefinitionKindType, FieldModelConfigFrameKindType, FieldModelConfigKindType, FieldModelDefinitionFrameKindType, FieldModelDefinitionKindType, FormComponentDefinitionFrameKindType, FormComponentDefinitionKindType } from '../shared.outline';
|
|
8
8
|
export declare const RepeatableComponentName: "RepeatableComponent";
|
|
9
9
|
export type RepeatableComponentNameType = typeof RepeatableComponentName;
|
|
10
10
|
export interface RepeatableFieldComponentConfigFrame extends FieldComponentConfigFrame {
|
|
@@ -12,6 +12,7 @@ export interface RepeatableFieldComponentConfigFrame extends FieldComponentConfi
|
|
|
12
12
|
addButtonShow?: boolean;
|
|
13
13
|
allowZeroRows?: boolean;
|
|
14
14
|
hideWhenZeroRows?: boolean;
|
|
15
|
+
canSort?: boolean;
|
|
15
16
|
}
|
|
16
17
|
export interface RepeatableFieldComponentConfigOutline extends RepeatableFieldComponentConfigFrame, FieldComponentConfigOutline {
|
|
17
18
|
elementTemplate: AvailableFormComponentDefinitionOutlines;
|
|
@@ -7,4 +7,4 @@ exports.RepeatableComponentName = `RepeatableComponent`;
|
|
|
7
7
|
exports.RepeatableModelName = `RepeatableModel`;
|
|
8
8
|
/* Repeatable Element Layout */
|
|
9
9
|
exports.RepeatableElementLayoutName = `RepeatableElementLayout`;
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0YWJsZS5vdXRsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbmZpZy9jb21wb25lbnQvcmVwZWF0YWJsZS5vdXRsaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTJDQSwwQkFBMEI7QUFFYixRQUFBLHVCQUF1QixHQUFHLHFCQUE4QixDQUFDO0FBMkJ0RSxzQkFBc0I7QUFFVCxRQUFBLG1CQUFtQixHQUFHLGlCQUEwQixDQUFDO0FBdUI5RCwrQkFBK0I7QUFDbEIsUUFBQSwyQkFBMkIsR0FBRyx5QkFBa0MsQ0FBQyJ9
|
|
@@ -34,10 +34,12 @@ export interface SaveButtonFieldComponentConfigFrame extends FieldComponentConfi
|
|
|
34
34
|
closeOnSave?: boolean;
|
|
35
35
|
/**
|
|
36
36
|
* The relative url to redirect to on a successful save if closeOnSave is true.
|
|
37
|
+
* Leave empty to use the browser's location.back.
|
|
37
38
|
*/
|
|
38
39
|
redirectLocation?: string;
|
|
39
40
|
/**
|
|
40
41
|
* The delay before redirecting on a successful save if closeOnSave is true.
|
|
42
|
+
* Default is 3 seconds delay.
|
|
41
43
|
*/
|
|
42
44
|
redirectDelaySeconds?: number;
|
|
43
45
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import jsonata from
|
|
1
|
+
import jsonata from 'jsonata';
|
|
2
2
|
/**
|
|
3
3
|
* A function that accepts a context and evaluates a previously compiled expression.
|
|
4
4
|
*/
|
|
@@ -7,8 +7,9 @@ export type JSONataEvaluate = (context: unknown) => Promise<unknown>;
|
|
|
7
7
|
* A function that registers a custom JSONata function.
|
|
8
8
|
*/
|
|
9
9
|
export type JSONataRegisterFunction = (name: string, implementation: (this: jsonata.Focus, ...args: unknown[]) => unknown, signature?: string) => void;
|
|
10
|
+
export declare function luxonFormatDate(value: unknown, format: unknown, sourceFormat?: unknown): string;
|
|
10
11
|
export declare const jsonataLibrary: {
|
|
11
|
-
|
|
12
|
+
luxonFormatDate: typeof luxonFormatDate;
|
|
12
13
|
};
|
|
13
14
|
/**
|
|
14
15
|
* Provide a JSONata expression string and return a compiled JSONata expression object.
|
|
@@ -4,12 +4,45 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.jsonataLibrary = void 0;
|
|
7
|
+
exports.luxonFormatDate = luxonFormatDate;
|
|
7
8
|
exports.jsonataCompile = jsonataCompile;
|
|
8
9
|
exports.jsonataEvaluate = jsonataEvaluate;
|
|
9
10
|
exports.jsonataCompileAndEvaluate = jsonataCompileAndEvaluate;
|
|
10
11
|
exports.jsonataEvaluateFunc = jsonataEvaluateFunc;
|
|
11
12
|
const jsonata_1 = __importDefault(require("jsonata"));
|
|
12
|
-
|
|
13
|
+
const luxon_1 = require("luxon");
|
|
14
|
+
function luxonFormatDate(value, format, sourceFormat) {
|
|
15
|
+
if (value === undefined || value === null || value === '') {
|
|
16
|
+
return '';
|
|
17
|
+
}
|
|
18
|
+
const outputFormat = typeof format === 'string' && format ? format : 'yyyy-LL-dd';
|
|
19
|
+
const inputFormat = typeof sourceFormat === 'string' && sourceFormat ? sourceFormat : undefined;
|
|
20
|
+
const valueAsString = typeof value === 'string' ? value.trim() : String(value);
|
|
21
|
+
let dateTime;
|
|
22
|
+
if (value instanceof Date) {
|
|
23
|
+
dateTime = luxon_1.DateTime.fromJSDate(value);
|
|
24
|
+
}
|
|
25
|
+
else if (typeof value === 'number') {
|
|
26
|
+
dateTime = luxon_1.DateTime.fromMillis(value);
|
|
27
|
+
}
|
|
28
|
+
else if (inputFormat) {
|
|
29
|
+
dateTime = luxon_1.DateTime.fromFormat(valueAsString, inputFormat);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const candidates = [
|
|
33
|
+
luxon_1.DateTime.fromISO(valueAsString),
|
|
34
|
+
luxon_1.DateTime.fromFormat(valueAsString, 'yyyy/MM/dd'),
|
|
35
|
+
luxon_1.DateTime.fromFormat(valueAsString, 'yyyy-MM-dd'),
|
|
36
|
+
luxon_1.DateTime.fromRFC2822(valueAsString),
|
|
37
|
+
luxon_1.DateTime.fromHTTP(valueAsString),
|
|
38
|
+
];
|
|
39
|
+
dateTime = candidates.find(candidate => candidate.isValid) ?? luxon_1.DateTime.invalid('Unparsable date');
|
|
40
|
+
}
|
|
41
|
+
return dateTime.isValid ? dateTime.toFormat(outputFormat) : '';
|
|
42
|
+
}
|
|
43
|
+
exports.jsonataLibrary = {
|
|
44
|
+
luxonFormatDate,
|
|
45
|
+
};
|
|
13
46
|
/**
|
|
14
47
|
* Provide a JSONata expression string and return a compiled JSONata expression object.
|
|
15
48
|
*
|
|
@@ -22,8 +55,8 @@ exports.jsonataLibrary = { jsonata: jsonata_1.default };
|
|
|
22
55
|
function jsonataCompile(expression, options) {
|
|
23
56
|
const compiled = (0, jsonata_1.default)(expression, options);
|
|
24
57
|
// Disable JSONata's dynamic eval function so browser/server validators only run the configured expression.
|
|
25
|
-
compiled.registerFunction(
|
|
26
|
-
|
|
58
|
+
compiled.registerFunction('eval', () => undefined);
|
|
59
|
+
compiled.registerFunction('luxonFormatDate', luxonFormatDate, '<(snd)(sn)s?:s>');
|
|
27
60
|
// TODO: register a function for obtaining translations
|
|
28
61
|
// TODO: register a function for formatting date time values
|
|
29
62
|
// TODO: register a function / context state holder that provides model data
|
|
@@ -43,4 +76,4 @@ function jsonataEvaluateFunc(expression, bindings) {
|
|
|
43
76
|
return await jsonataEvaluate(compiled, value, bindings);
|
|
44
77
|
};
|
|
45
78
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbmF0YS1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pzb25hdGEtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFpQkEsMENBNEJDO0FBZUQsd0NBY0M7QUFFRCwwQ0FNQztBQUVELDhEQU9DO0FBRUQsa0RBS0M7QUFsR0Qsc0RBQThCO0FBQzlCLGlDQUFpQztBQWdCakMsU0FBZ0IsZUFBZSxDQUFDLEtBQWMsRUFBRSxNQUFlLEVBQUUsWUFBc0I7SUFDckYsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQzFELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQ2xGLE1BQU0sV0FBVyxHQUFHLE9BQU8sWUFBWSxLQUFLLFFBQVEsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hHLE1BQU0sYUFBYSxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0UsSUFBSSxRQUFrQixDQUFDO0lBRXZCLElBQUksS0FBSyxZQUFZLElBQUksRUFBRSxDQUFDO1FBQzFCLFFBQVEsR0FBRyxnQkFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO1NBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNyQyxRQUFRLEdBQUcsZ0JBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztTQUFNLElBQUksV0FBVyxFQUFFLENBQUM7UUFDdkIsUUFBUSxHQUFHLGdCQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM3RCxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLGdCQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUMvQixnQkFBUSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDO1lBQ2hELGdCQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUM7WUFDaEQsZ0JBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO1lBQ25DLGdCQUFRLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztTQUNqQyxDQUFDO1FBQ0YsUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksZ0JBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDakUsQ0FBQztBQUVZLFFBQUEsY0FBYyxHQUFHO0lBQzVCLGVBQWU7Q0FDaEIsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLFVBQWtCLEVBQUUsT0FBZ0M7SUFDakYsTUFBTSxRQUFRLEdBQUcsSUFBQSxpQkFBTyxFQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUU5QywyR0FBMkc7SUFDM0csUUFBUSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUVuRCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFFakYsdURBQXVEO0lBQ3ZELDREQUE0RDtJQUM1RCw0RUFBNEU7SUFDNUUseUNBQXlDO0lBRXpDLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFTSxLQUFLLFVBQVUsZUFBZSxDQUNuQyxRQUE0QixFQUM1QixPQUFnQixFQUNoQixRQUFrQztJQUVsQyxPQUFPLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVNLEtBQUssVUFBVSx5QkFBeUIsQ0FDN0MsVUFBa0IsRUFDbEIsT0FBZ0IsRUFDaEIsUUFBa0M7SUFFbEMsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLE9BQU8sTUFBTSxlQUFlLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMsVUFBa0IsRUFBRSxRQUFrQztJQUN4RixNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUMsT0FBTyxLQUFLLFdBQVcsS0FBYztRQUNuQyxPQUFPLE1BQU0sZUFBZSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -36,6 +36,7 @@ export declare function buildKeyString(key: TemplateCompileKey): TemplateCompile
|
|
|
36
36
|
export type DynamicScriptResponseEvaluateKey = TemplateCompileKey;
|
|
37
37
|
export type DynamicScriptResponseEvaluateContext = unknown;
|
|
38
38
|
export type DynamicScriptResponseEvaluateExtra = {
|
|
39
|
+
jsonata?: unknown;
|
|
39
40
|
libraries?: Record<string, unknown>;
|
|
40
41
|
[key: string]: unknown;
|
|
41
42
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@researchdatabox/sails-ng-common",
|
|
3
|
-
"version": "0.0.1-beta.
|
|
3
|
+
"version": "0.0.1-beta.9950",
|
|
4
4
|
"description": "Common models shared between Sails API endpoints and client-side Angular code",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"types": "dist/src/index.d.ts",
|