amis-core 2.8.0 → 2.9.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/esm/Root.d.ts +1 -1
- package/esm/Root.js +1 -1
- package/esm/RootRenderer.d.ts +1 -1
- package/esm/RootRenderer.js +21 -4
- package/esm/SchemaRenderer.d.ts +2 -1
- package/esm/SchemaRenderer.js +1 -1
- package/esm/Scoped.js +30 -2
- package/esm/WithRootStore.d.ts +4 -8
- package/esm/WithRootStore.js +1 -1
- package/esm/WithStore.js +1 -1
- package/esm/actions/Action.d.ts +2 -1
- package/esm/actions/Action.js +33 -11
- package/esm/actions/AjaxAction.js +1 -1
- package/esm/actions/BreakAction.js +1 -1
- package/esm/actions/BroadcastAction.js +1 -1
- package/esm/actions/CmptAction.js +1 -1
- package/esm/actions/ContinueAction.js +1 -1
- package/esm/actions/CopyAction.js +1 -1
- package/esm/actions/CustomAction.js +2 -1
- package/esm/actions/DialogAction.d.ts +1 -1
- package/esm/actions/DialogAction.js +8 -3
- package/esm/actions/DrawerAction.js +1 -1
- package/esm/actions/EmailAction.js +1 -1
- package/esm/actions/LinkAction.js +1 -1
- package/esm/actions/LoopAction.js +1 -1
- package/esm/actions/PageAction.js +1 -1
- package/esm/actions/ParallelAction.js +1 -1
- package/esm/actions/SwitchAction.js +18 -15
- package/esm/actions/ToastAction.js +1 -1
- package/esm/components/LazyComponent.d.ts +3 -3
- package/esm/components/LazyComponent.js +1 -1
- package/esm/components/Overlay.d.ts +1 -1
- package/esm/components/Overlay.js +2 -1
- package/esm/components/PopOver.d.ts +2 -4
- package/esm/components/PopOver.js +2 -1
- package/esm/env.d.ts +3 -7
- package/esm/env.js +1 -1
- package/esm/envOverwrite.js +1 -1
- package/esm/factory.js +3 -1
- package/esm/index.d.ts +2 -3
- package/esm/index.js +7 -5
- package/esm/locale.d.ts +1 -3
- package/esm/locale.js +1 -1
- package/esm/renderers/Form.js +17 -15
- package/esm/renderers/Item.d.ts +9 -15
- package/esm/renderers/Item.js +2 -1
- package/esm/renderers/Options.js +2 -1
- package/esm/renderers/Placeholder.js +1 -1
- package/esm/renderers/builtin.js +1 -1
- package/esm/renderers/register.js +1 -1
- package/esm/renderers/wrapControl.d.ts +4 -8
- package/esm/renderers/wrapControl.js +21 -30
- package/esm/store/app.d.ts +4 -2
- package/esm/store/app.js +1 -1
- package/esm/store/combo.d.ts +12 -6
- package/esm/store/combo.js +1 -1
- package/esm/store/crud.d.ts +5 -2
- package/esm/store/crud.js +32 -12
- package/esm/store/form.d.ts +4 -2
- package/esm/store/form.js +1 -1
- package/esm/store/formItem.js +5 -4
- package/esm/store/iRenderer.d.ts +5 -2
- package/esm/store/iRenderer.js +15 -3
- package/esm/store/index.js +1 -1
- package/esm/store/list.d.ts +4 -2
- package/esm/store/list.js +5 -5
- package/esm/store/manager.js +1 -1
- package/esm/store/modal.d.ts +4 -2
- package/esm/store/modal.js +1 -1
- package/esm/store/node.js +1 -1
- package/esm/store/pagination.d.ts +4 -2
- package/esm/store/pagination.js +1 -1
- package/esm/store/root.d.ts +4 -2
- package/esm/store/root.js +1 -1
- package/esm/store/service.d.ts +4 -2
- package/esm/store/service.js +1 -1
- package/esm/store/table.d.ts +12 -6
- package/esm/store/table.js +12 -2
- package/esm/store/table2.d.ts +4 -2
- package/esm/store/table2.js +1 -1
- package/esm/theme.d.ts +2 -4
- package/esm/theme.js +1 -1
- package/esm/types.d.ts +39 -2
- package/esm/utils/Animation.js +1 -1
- package/esm/utils/ColorScale.js +1 -1
- package/esm/utils/DataSchema.js +1 -1
- package/esm/utils/DataScope.js +1 -1
- package/esm/utils/RootClose.js +1 -1
- package/esm/utils/SimpleMap.js +1 -1
- package/esm/utils/api.js +3 -4
- package/esm/utils/attachmentAdpator.js +1 -1
- package/esm/utils/autobind.js +1 -1
- package/esm/utils/columnsSplit.js +1 -1
- package/esm/utils/dataMapping.js +1 -1
- package/esm/utils/date.js +1 -1
- package/esm/utils/debug.d.ts +1 -0
- package/esm/utils/debug.js +1 -1
- package/esm/utils/decodeEntity.js +1 -1
- package/esm/utils/dom.js +1 -1
- package/esm/utils/errors.js +1 -1
- package/esm/utils/escapeHtml.js +1 -1
- package/esm/utils/filter-schema.js +1 -1
- package/esm/utils/filter.js +1 -1
- package/esm/utils/formatDuration.js +1 -1
- package/esm/utils/formula.d.ts +1 -0
- package/esm/utils/formula.js +6 -2
- package/esm/utils/getVariable.js +1 -1
- package/esm/utils/grammar.js +1 -1
- package/esm/utils/handleAction.js +1 -1
- package/esm/utils/helper.js +1 -1
- package/esm/utils/highlight.js +1 -1
- package/esm/utils/icon.js +1 -1
- package/esm/utils/image.js +1 -1
- package/esm/utils/index.d.ts +2 -0
- package/esm/utils/isPureVariable.js +1 -1
- package/esm/utils/json-schema-2-amis-schema.js +1 -1
- package/esm/utils/keyToPath.js +1 -1
- package/esm/utils/makeSorter.js +1 -1
- package/esm/utils/normalizeLink.js +1 -1
- package/esm/utils/normalizeOptions.js +1 -1
- package/esm/utils/object.js +1 -1
- package/esm/utils/offset.js +1 -1
- package/esm/utils/offsetParent.js +1 -1
- package/esm/utils/optionValueCompare.js +7 -3
- package/esm/utils/position.js +1 -1
- package/esm/utils/prettyBytes.js +1 -1
- package/esm/utils/renderer-event.js +1 -1
- package/esm/utils/replaceText.js +1 -1
- package/esm/utils/resize-sensor.js +1 -1
- package/esm/utils/resolveCondition.d.ts +5 -0
- package/esm/utils/resolveCondition.js +306 -0
- package/esm/utils/resolveVariable.js +1 -1
- package/esm/utils/resolveVariableAndFilter.js +1 -1
- package/esm/utils/resolveVariableAndFilterForAsync.d.ts +1 -0
- package/esm/utils/resolveVariableAndFilterForAsync.js +46 -0
- package/esm/utils/scrollPosition.js +1 -1
- package/esm/utils/string2regExp.js +1 -1
- package/esm/utils/stripNumber.js +1 -1
- package/esm/utils/style-helper.js +1 -1
- package/esm/utils/style.js +1 -1
- package/esm/utils/toNumber.js +1 -1
- package/esm/utils/tokenize.js +1 -1
- package/esm/utils/tpl-builtin.js +1 -1
- package/esm/utils/tpl-lodash.js +1 -1
- package/esm/utils/tpl.d.ts +7 -0
- package/esm/utils/tpl.js +23 -3
- package/esm/utils/uncontrollable.js +1 -1
- package/esm/utils/validations.js +1 -1
- package/lib/Root.d.ts +1 -1
- package/lib/Root.js +1 -1
- package/lib/RootRenderer.d.ts +1 -1
- package/lib/RootRenderer.js +21 -4
- package/lib/SchemaRenderer.d.ts +2 -1
- package/lib/SchemaRenderer.js +1 -1
- package/lib/Scoped.js +30 -2
- package/lib/WithRootStore.d.ts +4 -8
- package/lib/WithRootStore.js +1 -1
- package/lib/WithStore.js +1 -1
- package/lib/actions/Action.d.ts +2 -1
- package/lib/actions/Action.js +32 -10
- package/lib/actions/AjaxAction.js +1 -1
- package/lib/actions/BreakAction.js +1 -1
- package/lib/actions/BroadcastAction.js +1 -1
- package/lib/actions/CmptAction.js +1 -1
- package/lib/actions/ContinueAction.js +1 -1
- package/lib/actions/CopyAction.js +1 -1
- package/lib/actions/CustomAction.js +2 -1
- package/lib/actions/DialogAction.d.ts +1 -1
- package/lib/actions/DialogAction.js +8 -3
- package/lib/actions/DrawerAction.js +1 -1
- package/lib/actions/EmailAction.js +1 -1
- package/lib/actions/LinkAction.js +1 -1
- package/lib/actions/LoopAction.js +1 -1
- package/lib/actions/PageAction.js +1 -1
- package/lib/actions/ParallelAction.js +1 -1
- package/lib/actions/SwitchAction.js +17 -14
- package/lib/actions/ToastAction.js +1 -1
- package/lib/components/LazyComponent.d.ts +3 -3
- package/lib/components/LazyComponent.js +1 -1
- package/lib/components/Overlay.d.ts +1 -1
- package/lib/components/Overlay.js +2 -1
- package/lib/components/PopOver.d.ts +2 -4
- package/lib/components/PopOver.js +2 -1
- package/lib/env.d.ts +3 -7
- package/lib/env.js +1 -1
- package/lib/envOverwrite.js +1 -1
- package/lib/factory.js +3 -1
- package/lib/index.d.ts +2 -3
- package/lib/index.js +18 -2
- package/lib/locale.d.ts +1 -3
- package/lib/locale.js +1 -1
- package/lib/renderers/Form.js +16 -14
- package/lib/renderers/Item.d.ts +9 -15
- package/lib/renderers/Item.js +2 -1
- package/lib/renderers/Options.js +2 -1
- package/lib/renderers/Placeholder.js +1 -1
- package/lib/renderers/builtin.js +1 -1
- package/lib/renderers/register.js +1 -1
- package/lib/renderers/wrapControl.d.ts +4 -8
- package/lib/renderers/wrapControl.js +20 -28
- package/lib/store/app.d.ts +4 -2
- package/lib/store/app.js +1 -1
- package/lib/store/combo.d.ts +12 -6
- package/lib/store/combo.js +1 -1
- package/lib/store/crud.d.ts +5 -2
- package/lib/store/crud.js +31 -11
- package/lib/store/form.d.ts +4 -2
- package/lib/store/form.js +1 -1
- package/lib/store/formItem.js +5 -4
- package/lib/store/iRenderer.d.ts +5 -2
- package/lib/store/iRenderer.js +15 -3
- package/lib/store/index.js +1 -1
- package/lib/store/list.d.ts +4 -2
- package/lib/store/list.js +5 -5
- package/lib/store/manager.js +1 -1
- package/lib/store/modal.d.ts +4 -2
- package/lib/store/modal.js +1 -1
- package/lib/store/node.js +1 -1
- package/lib/store/pagination.d.ts +4 -2
- package/lib/store/pagination.js +1 -1
- package/lib/store/root.d.ts +4 -2
- package/lib/store/root.js +1 -1
- package/lib/store/service.d.ts +4 -2
- package/lib/store/service.js +1 -1
- package/lib/store/table.d.ts +12 -6
- package/lib/store/table.js +12 -2
- package/lib/store/table2.d.ts +4 -2
- package/lib/store/table2.js +1 -1
- package/lib/theme.d.ts +2 -4
- package/lib/theme.js +1 -1
- package/lib/types.d.ts +39 -2
- package/lib/utils/Animation.js +1 -1
- package/lib/utils/ColorScale.js +1 -1
- package/lib/utils/DataSchema.js +1 -1
- package/lib/utils/DataScope.js +1 -1
- package/lib/utils/RootClose.js +1 -1
- package/lib/utils/SimpleMap.js +1 -1
- package/lib/utils/api.js +2 -3
- package/lib/utils/attachmentAdpator.js +1 -1
- package/lib/utils/autobind.js +1 -1
- package/lib/utils/columnsSplit.js +1 -1
- package/lib/utils/dataMapping.js +1 -1
- package/lib/utils/date.js +1 -1
- package/lib/utils/debug.d.ts +1 -0
- package/lib/utils/debug.js +1 -1
- package/lib/utils/decodeEntity.js +1 -1
- package/lib/utils/dom.js +1 -1
- package/lib/utils/errors.js +1 -1
- package/lib/utils/escapeHtml.js +1 -1
- package/lib/utils/filter-schema.js +1 -1
- package/lib/utils/filter.js +1 -1
- package/lib/utils/formatDuration.js +1 -1
- package/lib/utils/formula.d.ts +1 -0
- package/lib/utils/formula.js +6 -1
- package/lib/utils/getVariable.js +1 -1
- package/lib/utils/grammar.js +1 -1
- package/lib/utils/handleAction.js +1 -1
- package/lib/utils/helper.js +1 -1
- package/lib/utils/highlight.js +1 -1
- package/lib/utils/icon.js +1 -1
- package/lib/utils/image.js +1 -1
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/isPureVariable.js +1 -1
- package/lib/utils/json-schema-2-amis-schema.js +1 -1
- package/lib/utils/keyToPath.js +1 -1
- package/lib/utils/makeSorter.js +1 -1
- package/lib/utils/normalizeLink.js +1 -1
- package/lib/utils/normalizeOptions.js +1 -1
- package/lib/utils/object.js +1 -1
- package/lib/utils/offset.js +1 -1
- package/lib/utils/offsetParent.js +1 -1
- package/lib/utils/optionValueCompare.js +7 -3
- package/lib/utils/position.js +1 -1
- package/lib/utils/prettyBytes.js +1 -1
- package/lib/utils/renderer-event.js +1 -1
- package/lib/utils/replaceText.js +1 -1
- package/lib/utils/resize-sensor.js +1 -1
- package/lib/utils/resolveCondition.d.ts +5 -0
- package/lib/utils/resolveCondition.js +322 -0
- package/lib/utils/resolveVariable.js +1 -1
- package/lib/utils/resolveVariableAndFilter.js +1 -1
- package/lib/utils/resolveVariableAndFilterForAsync.d.ts +1 -0
- package/lib/utils/resolveVariableAndFilterForAsync.js +50 -0
- package/lib/utils/scrollPosition.js +1 -1
- package/lib/utils/string2regExp.js +1 -1
- package/lib/utils/stripNumber.js +1 -1
- package/lib/utils/style-helper.js +1 -1
- package/lib/utils/style.js +1 -1
- package/lib/utils/toNumber.js +1 -1
- package/lib/utils/tokenize.js +1 -1
- package/lib/utils/tpl-builtin.js +1 -1
- package/lib/utils/tpl-lodash.js +1 -1
- package/lib/utils/tpl.d.ts +7 -0
- package/lib/utils/tpl.js +22 -1
- package/lib/utils/uncontrollable.js +1 -1
- package/lib/utils/validations.js +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* amis-core v2.9.0
|
|
3
|
+
* Copyright 2018-2023 fex
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { __awaiter, __generator, __read } from 'tslib';
|
|
7
|
+
import get from 'lodash/get';
|
|
8
|
+
import endsWith from 'lodash/endsWith';
|
|
9
|
+
import isEmpty from 'lodash/isEmpty';
|
|
10
|
+
import isEqual from 'lodash/isEqual';
|
|
11
|
+
import startsWith from 'lodash/startsWith';
|
|
12
|
+
import { resolveVariableAndFilterForAsync } from './resolveVariableAndFilterForAsync.js';
|
|
13
|
+
import moment from 'moment';
|
|
14
|
+
import capitalize from 'lodash/capitalize';
|
|
15
|
+
|
|
16
|
+
var conditionResolverMap = {};
|
|
17
|
+
var DEFAULT_RESULT = true;
|
|
18
|
+
function resolveCondition(conditions, data, defaultResult) {
|
|
19
|
+
if (defaultResult === void 0) { defaultResult = true; }
|
|
20
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
21
|
+
return __generator(this, function (_a) {
|
|
22
|
+
switch (_a.label) {
|
|
23
|
+
case 0:
|
|
24
|
+
if (!conditions ||
|
|
25
|
+
!conditions.conjunction ||
|
|
26
|
+
!Array.isArray(conditions.children) ||
|
|
27
|
+
!conditions.children.length) {
|
|
28
|
+
return [2 /*return*/, defaultResult];
|
|
29
|
+
}
|
|
30
|
+
return [4 /*yield*/, computeConditions(conditions.children, conditions.conjunction, data)];
|
|
31
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
function computeConditions(conditions, conjunction, data) {
|
|
37
|
+
if (conjunction === void 0) { conjunction = 'and'; }
|
|
38
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
39
|
+
var computeResult, index, len, item, result, _a;
|
|
40
|
+
return __generator(this, function (_b) {
|
|
41
|
+
switch (_b.label) {
|
|
42
|
+
case 0:
|
|
43
|
+
computeResult = true;
|
|
44
|
+
index = 0, len = conditions.length;
|
|
45
|
+
_b.label = 1;
|
|
46
|
+
case 1:
|
|
47
|
+
if (!(index < len)) return [3 /*break*/, 7];
|
|
48
|
+
item = conditions[index];
|
|
49
|
+
if (!(item.conjunction && Array.isArray(item.children) && item.children.length)) return [3 /*break*/, 3];
|
|
50
|
+
return [4 /*yield*/, computeConditions(item.children, item.conjunction, data)];
|
|
51
|
+
case 2:
|
|
52
|
+
_a = _b.sent();
|
|
53
|
+
return [3 /*break*/, 5];
|
|
54
|
+
case 3: return [4 /*yield*/, computeCondition(item, index, data)];
|
|
55
|
+
case 4:
|
|
56
|
+
_a = _b.sent();
|
|
57
|
+
_b.label = 5;
|
|
58
|
+
case 5:
|
|
59
|
+
result = _a;
|
|
60
|
+
computeResult = !!result;
|
|
61
|
+
if ((result && conjunction === 'or') ||
|
|
62
|
+
(!result && conjunction === 'and')) {
|
|
63
|
+
return [3 /*break*/, 7];
|
|
64
|
+
}
|
|
65
|
+
_b.label = 6;
|
|
66
|
+
case 6:
|
|
67
|
+
index++;
|
|
68
|
+
return [3 /*break*/, 1];
|
|
69
|
+
case 7: return [2 /*return*/, computeResult];
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
function computeCondition(rule, index, data) {
|
|
75
|
+
var _a;
|
|
76
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
77
|
+
var leftValue, rightValue, func;
|
|
78
|
+
return __generator(this, function (_b) {
|
|
79
|
+
switch (_b.label) {
|
|
80
|
+
case 0:
|
|
81
|
+
leftValue = get(data, rule.left.field);
|
|
82
|
+
return [4 /*yield*/, resolveVariableAndFilterForAsync(rule.right, data)];
|
|
83
|
+
case 1:
|
|
84
|
+
rightValue = _b.sent();
|
|
85
|
+
func = (_a = conditionResolverMap["".concat(rule.op, "For").concat(capitalize(rule.left.type))]) !== null && _a !== void 0 ? _a : conditionResolverMap[rule.op];
|
|
86
|
+
return [2 /*return*/, func ? func(leftValue, rightValue, rule.left.type) : DEFAULT_RESULT];
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
function startsWithFunc(left, right) {
|
|
92
|
+
if (left === undefined || right === undefined) {
|
|
93
|
+
return DEFAULT_RESULT;
|
|
94
|
+
}
|
|
95
|
+
return startsWith(left, right);
|
|
96
|
+
}
|
|
97
|
+
function endsWithFunc(left, right) {
|
|
98
|
+
if (left === undefined || right === undefined) {
|
|
99
|
+
return DEFAULT_RESULT;
|
|
100
|
+
}
|
|
101
|
+
return endsWith(left, right);
|
|
102
|
+
}
|
|
103
|
+
function equalFunc(left, right) {
|
|
104
|
+
return isEqual(left, right);
|
|
105
|
+
}
|
|
106
|
+
function notEqualFunc(left, right) {
|
|
107
|
+
return !isEqual(left, right);
|
|
108
|
+
}
|
|
109
|
+
function isEmptyFunc(left) {
|
|
110
|
+
if (typeof left === 'string') {
|
|
111
|
+
return !left;
|
|
112
|
+
}
|
|
113
|
+
else if (typeof left === 'number') {
|
|
114
|
+
return left === undefined;
|
|
115
|
+
}
|
|
116
|
+
else if (Array.isArray(left)) {
|
|
117
|
+
return !left.length;
|
|
118
|
+
}
|
|
119
|
+
else if (typeof left === 'object') {
|
|
120
|
+
return isEmpty(left);
|
|
121
|
+
}
|
|
122
|
+
return DEFAULT_RESULT;
|
|
123
|
+
}
|
|
124
|
+
function isNotEmptyFunc(left) {
|
|
125
|
+
if (typeof left === 'string') {
|
|
126
|
+
return !left;
|
|
127
|
+
}
|
|
128
|
+
else if (typeof left === 'number') {
|
|
129
|
+
return left !== undefined;
|
|
130
|
+
}
|
|
131
|
+
else if (Array.isArray(left)) {
|
|
132
|
+
return !!left.length;
|
|
133
|
+
}
|
|
134
|
+
else if (typeof left === 'object') {
|
|
135
|
+
return !isEmpty(left);
|
|
136
|
+
}
|
|
137
|
+
return DEFAULT_RESULT;
|
|
138
|
+
}
|
|
139
|
+
function greaterFunc(left, right) {
|
|
140
|
+
if (left === undefined || right === undefined) {
|
|
141
|
+
return DEFAULT_RESULT;
|
|
142
|
+
}
|
|
143
|
+
return parseFloat(left) > parseFloat(right);
|
|
144
|
+
}
|
|
145
|
+
function normalizeDate(raw) {
|
|
146
|
+
if (typeof raw === 'string' || typeof raw === 'number') {
|
|
147
|
+
var formats = ['', 'YYYY-MM-DD HH:mm:ss', 'X'];
|
|
148
|
+
if (/^\d{10}((\.\d+)*)$/.test(raw.toString())) {
|
|
149
|
+
formats = ['X', 'x', 'YYYY-MM-DD HH:mm:ss', ''];
|
|
150
|
+
}
|
|
151
|
+
else if (/^\d{13}((\.\d+)*)$/.test(raw.toString())) {
|
|
152
|
+
formats = ['x', 'X', 'YYYY-MM-DD HH:mm:ss', ''];
|
|
153
|
+
}
|
|
154
|
+
while (formats.length) {
|
|
155
|
+
var format = formats.shift();
|
|
156
|
+
var date = moment(raw, format);
|
|
157
|
+
if (date.isValid()) {
|
|
158
|
+
return date.toDate();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return raw;
|
|
163
|
+
}
|
|
164
|
+
function normalizeDateRange(raw) {
|
|
165
|
+
return (Array.isArray(raw) ? raw : raw.split(',')).map(function (item) {
|
|
166
|
+
return normalizeDate(String(item).trim());
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
function greaterForDateFunc(left, right) {
|
|
170
|
+
left = normalizeDate(left);
|
|
171
|
+
right = normalizeDate(right);
|
|
172
|
+
return moment(left).isAfter(moment(right), 's');
|
|
173
|
+
}
|
|
174
|
+
function greaterOrEqualForDateFunc(left, right) {
|
|
175
|
+
left = normalizeDate(left);
|
|
176
|
+
right = normalizeDate(right);
|
|
177
|
+
return moment(left).isSameOrAfter(moment(right), 's');
|
|
178
|
+
}
|
|
179
|
+
function greaterOrEqualFunc(left, right) {
|
|
180
|
+
if (left === undefined || right === undefined) {
|
|
181
|
+
return DEFAULT_RESULT;
|
|
182
|
+
}
|
|
183
|
+
return parseFloat(left) >= parseFloat(right);
|
|
184
|
+
}
|
|
185
|
+
function lessFunc(left, right) {
|
|
186
|
+
if (left === undefined || right === undefined) {
|
|
187
|
+
return DEFAULT_RESULT;
|
|
188
|
+
}
|
|
189
|
+
return parseFloat(left) < parseFloat(right);
|
|
190
|
+
}
|
|
191
|
+
function lessForDateFunc(left, right) {
|
|
192
|
+
left = normalizeDate(left);
|
|
193
|
+
right = normalizeDate(right);
|
|
194
|
+
return moment(left).isBefore(moment(right), 's');
|
|
195
|
+
}
|
|
196
|
+
function lessOrEqualForDateFunc(left, right) {
|
|
197
|
+
left = normalizeDate(left);
|
|
198
|
+
right = normalizeDate(right);
|
|
199
|
+
return moment(left).isSameOrBefore(moment(right), 's');
|
|
200
|
+
}
|
|
201
|
+
function lessOrEqualFunc(left, right) {
|
|
202
|
+
if (left === undefined || right === undefined) {
|
|
203
|
+
return DEFAULT_RESULT;
|
|
204
|
+
}
|
|
205
|
+
return parseFloat(left) <= parseFloat(right);
|
|
206
|
+
}
|
|
207
|
+
function likeFunc(left, right) {
|
|
208
|
+
if (left === undefined || right === undefined) {
|
|
209
|
+
return DEFAULT_RESULT;
|
|
210
|
+
}
|
|
211
|
+
return !!~left.indexOf(right);
|
|
212
|
+
}
|
|
213
|
+
function notLikeFunc(left, right) {
|
|
214
|
+
if (left === undefined || right === undefined) {
|
|
215
|
+
return DEFAULT_RESULT;
|
|
216
|
+
}
|
|
217
|
+
return !~left.indexOf(right);
|
|
218
|
+
}
|
|
219
|
+
function betweenFunc(left, right) {
|
|
220
|
+
if (typeof left === 'number' && right !== undefined) {
|
|
221
|
+
var _a = __read(right.sort(), 2), min = _a[0], max = _a[1];
|
|
222
|
+
return left >= parseFloat(min) && left <= parseFloat(max);
|
|
223
|
+
}
|
|
224
|
+
return DEFAULT_RESULT;
|
|
225
|
+
}
|
|
226
|
+
function betweenForDateFunc(left, right) {
|
|
227
|
+
if (right !== undefined) {
|
|
228
|
+
var _a = __read(normalizeDateRange(right), 2), min = _a[0], max = _a[1];
|
|
229
|
+
return moment(normalizeDate(left)).isBetween(min, max, 's', '[]');
|
|
230
|
+
}
|
|
231
|
+
return DEFAULT_RESULT;
|
|
232
|
+
}
|
|
233
|
+
function notBetweenFunc(left, right) {
|
|
234
|
+
if (typeof left === 'number' && right !== undefined) {
|
|
235
|
+
var _a = __read(right.sort(), 2), min = _a[0], max = _a[1];
|
|
236
|
+
return left < parseFloat(min) && left > parseFloat(max);
|
|
237
|
+
}
|
|
238
|
+
return DEFAULT_RESULT;
|
|
239
|
+
}
|
|
240
|
+
function notBetweenForDateFunc(left, right) {
|
|
241
|
+
if (right !== undefined) {
|
|
242
|
+
var _a = __read(normalizeDateRange(right), 2), min = _a[0], max = _a[1];
|
|
243
|
+
return !moment(normalizeDate(left)).isBetween(min, max, 's', '[]');
|
|
244
|
+
}
|
|
245
|
+
return DEFAULT_RESULT;
|
|
246
|
+
}
|
|
247
|
+
function selectAnyInFunc(left, right) {
|
|
248
|
+
if (!Array.isArray(right)) {
|
|
249
|
+
return DEFAULT_RESULT;
|
|
250
|
+
}
|
|
251
|
+
if (Array.isArray(left)) {
|
|
252
|
+
return right.every(function (item) { return left.includes(item); });
|
|
253
|
+
}
|
|
254
|
+
return right.includes(left);
|
|
255
|
+
}
|
|
256
|
+
function selectNotAnyInFunc(left, right) {
|
|
257
|
+
if (!Array.isArray(right)) {
|
|
258
|
+
return DEFAULT_RESULT;
|
|
259
|
+
}
|
|
260
|
+
if (Array.isArray(left)) {
|
|
261
|
+
return !right.every(function (item) { return left.includes(item); });
|
|
262
|
+
}
|
|
263
|
+
return !right.includes(left);
|
|
264
|
+
}
|
|
265
|
+
function registerConditionComputer(op, func, fieldType) {
|
|
266
|
+
conditionResolverMap["".concat(op).concat(fieldType ? 'For' + capitalize(fieldType) : '')] = func;
|
|
267
|
+
}
|
|
268
|
+
function getConditionComputers() {
|
|
269
|
+
return conditionResolverMap;
|
|
270
|
+
}
|
|
271
|
+
registerConditionComputer('greater', greaterFunc);
|
|
272
|
+
registerConditionComputer('greater', greaterForDateFunc, 'date');
|
|
273
|
+
registerConditionComputer('greater', greaterForDateFunc, 'time');
|
|
274
|
+
registerConditionComputer('greater', greaterForDateFunc, 'datetime');
|
|
275
|
+
registerConditionComputer('greater_or_equal', greaterOrEqualFunc);
|
|
276
|
+
registerConditionComputer('greater_or_equal', greaterOrEqualForDateFunc, 'date');
|
|
277
|
+
registerConditionComputer('greater_or_equal', greaterOrEqualForDateFunc, 'time');
|
|
278
|
+
registerConditionComputer('greater_or_equal', greaterOrEqualForDateFunc, 'datetime');
|
|
279
|
+
registerConditionComputer('less', lessFunc);
|
|
280
|
+
registerConditionComputer('less', lessForDateFunc, 'date');
|
|
281
|
+
registerConditionComputer('less', lessForDateFunc, 'time');
|
|
282
|
+
registerConditionComputer('less', lessForDateFunc, 'datetime');
|
|
283
|
+
registerConditionComputer('less_or_equal', lessOrEqualFunc);
|
|
284
|
+
registerConditionComputer('less_or_equal', lessOrEqualForDateFunc, 'date');
|
|
285
|
+
registerConditionComputer('less_or_equal', lessOrEqualForDateFunc, 'time');
|
|
286
|
+
registerConditionComputer('less_or_equal', lessOrEqualForDateFunc, 'datetime');
|
|
287
|
+
registerConditionComputer('is_empty', isEmptyFunc);
|
|
288
|
+
registerConditionComputer('is_not_empty', isNotEmptyFunc);
|
|
289
|
+
registerConditionComputer('between', betweenFunc);
|
|
290
|
+
registerConditionComputer('between', betweenForDateFunc, 'date');
|
|
291
|
+
registerConditionComputer('between', betweenForDateFunc, 'time');
|
|
292
|
+
registerConditionComputer('between', betweenForDateFunc, 'datetime');
|
|
293
|
+
registerConditionComputer('not_between', notBetweenFunc);
|
|
294
|
+
registerConditionComputer('not_between', notBetweenForDateFunc, 'date');
|
|
295
|
+
registerConditionComputer('not_between', notBetweenForDateFunc, 'time');
|
|
296
|
+
registerConditionComputer('not_between', notBetweenForDateFunc, 'datetime');
|
|
297
|
+
registerConditionComputer('equal', equalFunc);
|
|
298
|
+
registerConditionComputer('not_equal', notEqualFunc);
|
|
299
|
+
registerConditionComputer('like', likeFunc);
|
|
300
|
+
registerConditionComputer('not_like', notLikeFunc);
|
|
301
|
+
registerConditionComputer('select_any_in', selectAnyInFunc);
|
|
302
|
+
registerConditionComputer('select_not_any_in', selectNotAnyInFunc);
|
|
303
|
+
registerConditionComputer('starts_with', startsWithFunc);
|
|
304
|
+
registerConditionComputer('ends_with', endsWithFunc);
|
|
305
|
+
|
|
306
|
+
export { getConditionComputers, registerConditionComputer, resolveCondition };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const resolveVariableAndFilterForAsync: (path?: string, data?: object, defaultFilter?: string, fallbackValue?: (value: any) => any) => Promise<any>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* amis-core v2.9.0
|
|
3
|
+
* Copyright 2018-2023 fex
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { __awaiter, __generator } from 'tslib';
|
|
7
|
+
import { parse, AsyncEvaluator } from 'amis-formula';
|
|
8
|
+
|
|
9
|
+
var resolveVariableAndFilterForAsync = function (path, data, defaultFilter, fallbackValue) {
|
|
10
|
+
if (data === void 0) { data = {}; }
|
|
11
|
+
if (defaultFilter === void 0) { defaultFilter = '| html'; }
|
|
12
|
+
if (fallbackValue === void 0) { fallbackValue = function (value) { return value; }; }
|
|
13
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
14
|
+
var ast, ret, e_1;
|
|
15
|
+
return __generator(this, function (_a) {
|
|
16
|
+
switch (_a.label) {
|
|
17
|
+
case 0:
|
|
18
|
+
if (!path || typeof path !== 'string') {
|
|
19
|
+
return [2 /*return*/, undefined];
|
|
20
|
+
}
|
|
21
|
+
_a.label = 1;
|
|
22
|
+
case 1:
|
|
23
|
+
_a.trys.push([1, 3, , 4]);
|
|
24
|
+
ast = parse(path, {
|
|
25
|
+
evalMode: false,
|
|
26
|
+
allowFilter: true
|
|
27
|
+
});
|
|
28
|
+
return [4 /*yield*/, new AsyncEvaluator(data, {
|
|
29
|
+
defaultFilter: defaultFilter
|
|
30
|
+
}).evalute(ast)];
|
|
31
|
+
case 2:
|
|
32
|
+
ret = _a.sent();
|
|
33
|
+
return [2 /*return*/, ret == null && !~path.indexOf('default') && !~path.indexOf('now')
|
|
34
|
+
? fallbackValue(ret)
|
|
35
|
+
: ret];
|
|
36
|
+
case 3:
|
|
37
|
+
e_1 = _a.sent();
|
|
38
|
+
console.warn(e_1);
|
|
39
|
+
return [2 /*return*/, undefined];
|
|
40
|
+
case 4: return [2 /*return*/];
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export { resolveVariableAndFilterForAsync };
|
package/esm/utils/stripNumber.js
CHANGED
package/esm/utils/style.js
CHANGED
package/esm/utils/toNumber.js
CHANGED
package/esm/utils/tokenize.js
CHANGED
package/esm/utils/tpl-builtin.js
CHANGED
package/esm/utils/tpl-lodash.js
CHANGED
package/esm/utils/tpl.d.ts
CHANGED
|
@@ -7,5 +7,12 @@ export declare function registerTplEnginer(name: string, enginer: Enginer): void
|
|
|
7
7
|
export declare function filter(tpl?: any, data?: object, ...rest: Array<any>): string;
|
|
8
8
|
export declare function setCustomEvalExpression(fn: (expression: string, data?: any) => boolean): void;
|
|
9
9
|
export declare function evalExpression(expression: string, data?: object): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* 解析表达式(支持condition-builder)
|
|
12
|
+
* @param expression 表达式 or condition-builder对象
|
|
13
|
+
* @param data 上下文
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
export declare function evalExpressionWithConditionBuilder(expression: any, data?: object, defaultResult?: boolean): Promise<boolean>;
|
|
10
17
|
export declare function setCustomEvalJs(fn: (expression: string, data?: any) => any): void;
|
|
11
18
|
export declare function evalJS(js: string, data: object): any;
|
package/esm/utils/tpl.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* amis-core v2.
|
|
2
|
+
* amis-core v2.9.0
|
|
3
3
|
* Copyright 2018-2023 fex
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { __spreadArray, __read } from 'tslib';
|
|
6
|
+
import { __spreadArray, __read, __awaiter, __generator } from 'tslib';
|
|
7
7
|
import { register } from './tpl-builtin.js';
|
|
8
8
|
import { register as register$1 } from './tpl-lodash.js';
|
|
9
9
|
import { getFilters, parse, evaluate } from 'amis-formula';
|
|
10
|
+
import { resolveCondition } from './resolveCondition.js';
|
|
10
11
|
|
|
11
12
|
var enginers = {};
|
|
12
13
|
function registerTplEnginer(name, enginer) {
|
|
@@ -79,6 +80,25 @@ function evalExpression(expression, data) {
|
|
|
79
80
|
return false;
|
|
80
81
|
}
|
|
81
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* 解析表达式(支持condition-builder)
|
|
85
|
+
* @param expression 表达式 or condition-builder对象
|
|
86
|
+
* @param data 上下文
|
|
87
|
+
* @returns
|
|
88
|
+
*/
|
|
89
|
+
function evalExpressionWithConditionBuilder(expression, data, defaultResult) {
|
|
90
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
91
|
+
return __generator(this, function (_a) {
|
|
92
|
+
switch (_a.label) {
|
|
93
|
+
case 0:
|
|
94
|
+
if (!(Object.prototype.toString.call(expression) === '[object Object]')) return [3 /*break*/, 2];
|
|
95
|
+
return [4 /*yield*/, resolveCondition(expression, data, defaultResult)];
|
|
96
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
97
|
+
case 2: return [2 /*return*/, evalExpression(String(expression), data)];
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
}
|
|
82
102
|
var AST_CACHE = {};
|
|
83
103
|
function evalFormula(expression, data) {
|
|
84
104
|
var ast = AST_CACHE[expression] ||
|
|
@@ -128,4 +148,4 @@ function evalJS(js, data) {
|
|
|
128
148
|
});
|
|
129
149
|
});
|
|
130
150
|
|
|
131
|
-
export { evalExpression, evalJS, filter, registerTplEnginer, setCustomEvalExpression, setCustomEvalJs };
|
|
151
|
+
export { evalExpression, evalExpressionWithConditionBuilder, evalJS, filter, registerTplEnginer, setCustomEvalExpression, setCustomEvalJs };
|
package/esm/utils/validations.js
CHANGED
package/lib/Root.d.ts
CHANGED
package/lib/Root.js
CHANGED
package/lib/RootRenderer.d.ts
CHANGED
|
@@ -23,5 +23,5 @@ export declare class RootRenderer extends React.Component<RootRendererProps> {
|
|
|
23
23
|
handleDrawerClose(): void;
|
|
24
24
|
openFeedback(dialog: any, ctx: any): Promise<unknown>;
|
|
25
25
|
reloadTarget(scoped: IScopedContext, target: string, data?: any): void;
|
|
26
|
-
render(): React.
|
|
26
|
+
render(): string | number | boolean | JSX.Element | React.ReactFragment | null | undefined;
|
|
27
27
|
}
|
package/lib/RootRenderer.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* amis-core v2.
|
|
2
|
+
* amis-core v2.9.0
|
|
3
3
|
* Copyright 2018-2023 fex
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -122,11 +122,11 @@ var RootRenderer = /** @class */ (function (_super) {
|
|
|
122
122
|
}
|
|
123
123
|
else if (action.actionType === 'dialog') {
|
|
124
124
|
store.setCurrentAction(action);
|
|
125
|
-
store.openDialog(ctx);
|
|
125
|
+
store.openDialog(ctx, undefined, undefined, delegate);
|
|
126
126
|
}
|
|
127
127
|
else if (action.actionType === 'drawer') {
|
|
128
128
|
store.setCurrentAction(action);
|
|
129
|
-
store.openDrawer(ctx);
|
|
129
|
+
store.openDrawer(ctx, undefined, undefined, delegate);
|
|
130
130
|
}
|
|
131
131
|
else if (action.actionType === 'toast') {
|
|
132
132
|
(_b = (_a = action.toast) === null || _a === void 0 ? void 0 : _a.items) === null || _b === void 0 ? void 0 : _b.forEach(function (item) {
|
|
@@ -160,7 +160,7 @@ var RootRenderer = /** @class */ (function (_super) {
|
|
|
160
160
|
redirect = action.redirect && tpl.filter(action.redirect, store.data);
|
|
161
161
|
redirect && env.jumpTo(redirect, action);
|
|
162
162
|
action.reload &&
|
|
163
|
-
this.reloadTarget(delegate || this.context, action.reload, store.data);
|
|
163
|
+
this.reloadTarget(delegate || this.context, tpl.filter(action.reload, ctx), store.data);
|
|
164
164
|
return [2 /*return*/];
|
|
165
165
|
}
|
|
166
166
|
});
|
|
@@ -192,6 +192,7 @@ var RootRenderer = /** @class */ (function (_super) {
|
|
|
192
192
|
}
|
|
193
193
|
};
|
|
194
194
|
RootRenderer.prototype.handleDialogConfirm = function (values, action) {
|
|
195
|
+
var _a;
|
|
195
196
|
var args = [];
|
|
196
197
|
for (var _i = 2; _i < arguments.length; _i++) {
|
|
197
198
|
args[_i - 2] = arguments[_i];
|
|
@@ -206,7 +207,13 @@ var RootRenderer = /** @class */ (function (_super) {
|
|
|
206
207
|
dialog.onConfirm.apply(dialog, tslib.__spreadArray([values, action], tslib.__read(args), false)) === false) {
|
|
207
208
|
return;
|
|
208
209
|
}
|
|
210
|
+
var dialogAction = store.action;
|
|
211
|
+
var reload = (_a = action.reload) !== null && _a !== void 0 ? _a : dialogAction.reload;
|
|
212
|
+
var scoped = store.getDialogScoped() || this.context;
|
|
209
213
|
store.closeDialog(true);
|
|
214
|
+
if (reload) {
|
|
215
|
+
scoped.reload(reload, store.data);
|
|
216
|
+
}
|
|
210
217
|
};
|
|
211
218
|
RootRenderer.prototype.handleDialogClose = function (confirmed) {
|
|
212
219
|
if (confirmed === void 0) { confirmed = false; }
|
|
@@ -214,6 +221,7 @@ var RootRenderer = /** @class */ (function (_super) {
|
|
|
214
221
|
store.closeDialog(confirmed);
|
|
215
222
|
};
|
|
216
223
|
RootRenderer.prototype.handleDrawerConfirm = function (values, action) {
|
|
224
|
+
var _a;
|
|
217
225
|
var args = [];
|
|
218
226
|
for (var _i = 2; _i < arguments.length; _i++) {
|
|
219
227
|
args[_i - 2] = arguments[_i];
|
|
@@ -228,7 +236,16 @@ var RootRenderer = /** @class */ (function (_super) {
|
|
|
228
236
|
drawer.onConfirm.apply(drawer, tslib.__spreadArray([values, action], tslib.__read(args), false)) === false) {
|
|
229
237
|
return;
|
|
230
238
|
}
|
|
239
|
+
var drawerAction = store.action;
|
|
240
|
+
var reload = (_a = action.reload) !== null && _a !== void 0 ? _a : drawerAction.reload;
|
|
241
|
+
var scoped = store.getDrawerScoped() || this.context;
|
|
231
242
|
store.closeDrawer();
|
|
243
|
+
// 稍等会,等动画结束。
|
|
244
|
+
setTimeout(function () {
|
|
245
|
+
if (reload) {
|
|
246
|
+
scoped.reload(reload, store.data);
|
|
247
|
+
}
|
|
248
|
+
}, 300);
|
|
232
249
|
};
|
|
233
250
|
RootRenderer.prototype.handleDrawerClose = function () {
|
|
234
251
|
var store = this.store;
|
package/lib/SchemaRenderer.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { RendererConfig, RendererEnv, RendererProps } from './factory';
|
|
3
|
+
import { IScopedContext } from './Scoped';
|
|
3
4
|
import { Schema, SchemaNode } from './types';
|
|
4
5
|
import { RendererEvent } from './utils/renderer-event';
|
|
5
6
|
interface SchemaRendererProps extends Partial<RendererProps> {
|
|
@@ -9,7 +10,7 @@ interface SchemaRendererProps extends Partial<RendererProps> {
|
|
|
9
10
|
}
|
|
10
11
|
export declare class SchemaRenderer extends React.Component<SchemaRendererProps, any> {
|
|
11
12
|
static displayName: string;
|
|
12
|
-
static contextType: React.Context<
|
|
13
|
+
static contextType: React.Context<IScopedContext>;
|
|
13
14
|
rendererKey: string;
|
|
14
15
|
renderer: RendererConfig | null;
|
|
15
16
|
ref: any;
|
package/lib/SchemaRenderer.js
CHANGED