@solar-angular/ui-zorro 18.2.0 → 18.3.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/crud/editor.d.ts +1 -2
- package/crud/searcher.d.ts +1 -2
- package/esm2022/crud/editor.mjs +1 -1
- package/esm2022/crud/searcher.mjs +4 -1
- package/esm2022/fluent-form/controls.mjs +17 -51
- package/esm2022/fluent-form/form.mjs +2 -3
- package/esm2022/fluent-form/helper.mjs +5 -2
- package/fesm2022/solar-angular-ui-zorro-crud.mjs +2 -0
- package/fesm2022/solar-angular-ui-zorro-crud.mjs.map +1 -1
- package/fesm2022/solar-angular-ui-zorro-fluent-form.mjs +24 -56
- package/fesm2022/solar-angular-ui-zorro-fluent-form.mjs.map +1 -1
- package/fluent-form/controls.d.ts +6 -31
- package/fluent-form/form.d.ts +1 -1
- package/fluent-form/helper.d.ts +12 -5
- package/package.json +13 -12
package/crud/editor.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { FormGroup } from '@angular/forms';
|
|
2
|
-
import { AbstractFormGroupSchema } from '@fluent-form/core';
|
|
3
2
|
import { Observable } from 'rxjs';
|
|
4
3
|
export declare class Editor<T> {
|
|
5
4
|
private _visible;
|
|
@@ -7,7 +6,7 @@ export declare class Editor<T> {
|
|
|
7
6
|
originalModel: T;
|
|
8
7
|
model: T;
|
|
9
8
|
loading: boolean;
|
|
10
|
-
schema: AbstractFormGroupSchema
|
|
9
|
+
schema: import("@angular/core").Signal<import("@fluent-form/core").AbstractFormGroupSchema>;
|
|
11
10
|
/** 是否在保存完之后固定抽屉 */
|
|
12
11
|
pin: boolean;
|
|
13
12
|
form?: FormGroup;
|
package/crud/searcher.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { FormGroup } from '@angular/forms';
|
|
2
|
-
import { AbstractFormGroupSchema } from '@fluent-form/core';
|
|
3
2
|
export declare class Searcher<T> {
|
|
4
3
|
form?: FormGroup;
|
|
5
4
|
model: Partial<T>;
|
|
6
|
-
schema: AbstractFormGroupSchema
|
|
5
|
+
schema: import("@angular/core").Signal<import("@fluent-form/core").AbstractFormGroupSchema>;
|
|
7
6
|
pageSize: number;
|
|
8
7
|
pageNo: number;
|
|
9
8
|
reset(): void;
|
package/esm2022/crud/editor.mjs
CHANGED
|
@@ -62,4 +62,4 @@ export class Editor {
|
|
|
62
62
|
this.model = model;
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvdWktem9ycm8vY3J1ZC9lZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pDLE9BQU8sRUFBYyxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpELE1BQU0sT0FBTyxNQUFNO0lBQW5CO1FBQ1UsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUN6QixZQUFZO1FBQ1osa0JBQWEsR0FBTSxFQUFPLENBQUM7UUFDM0IsVUFBSyxHQUFNLEVBQU8sQ0FBQztRQUNuQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGdFQUFnRTtRQUNoRSxXQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLG1CQUFtQjtRQUNuQixRQUFHLEdBQUcsS0FBSyxDQUFDO0lBZ0VkLENBQUM7SUE3REMsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFjO1FBQ3hCLDRCQUE0QjtRQUM1QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFlBQVk7WUFDNUIsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsT0FBTyxDQUFDLFVBQXlCLEVBQUUsRUFBRTtZQUNuQyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQ3BCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUNyQyxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVTtRQUNSLE9BQU8sQ0FBQyxVQUF5QixFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUNuRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FDcEQsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsRUFBTyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFRO1FBQ1gsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZm9ybSB9IGZyb20gJ0BmbHVlbnQtZm9ybS9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZpbmFsaXplLCB0YXAgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIEVkaXRvcjxUPiB7XG4gIHByaXZhdGUgX3Zpc2libGUgPSBmYWxzZTtcbiAgLyoqIOaooeWei+WIneWni+WAvCAqL1xuICBvcmlnaW5hbE1vZGVsOiBUID0ge30gYXMgVDtcbiAgbW9kZWw6IFQgPSB7fSBhcyBUO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgc2NoZW1hID0gZm9ybSgoKSA9PiB7IH0pO1xuICAvKiog5piv5ZCm5Zyo5L+d5a2Y5a6M5LmL5ZCO5Zu65a6a5oq95bGJICovXG4gIHBpbiA9IGZhbHNlO1xuICBmb3JtPzogRm9ybUdyb3VwO1xuXG4gIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xuICB9XG5cbiAgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAvLyDmiYvliqjliKTmlq3kuIDkuIvvvIzlm6DkuLrlj4zlkJHnu5HlrprnmoTljp/lm6DvvIzov5nph4zkvJrooqvorr7nva7kuKTmrKFcbiAgICBpZiAodGhpcy5fdmlzaWJsZSAhPT0gdmFsdWUpIHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgdGhpcy5yZXNldCgpOyAvLyDlhbPpl63nmoTml7blgJnoh6rliqjph43nva5cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fdmlzaWJsZSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIOiHquWKqOaOp+WItiBsb2FkaW5nIOeKtuaAgVxuICAgKi9cbiAgd2l0aExvYWRpbmc8WD4oKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICByZXR1cm4gKG9ic2VydmFibGU6IE9ic2VydmFibGU8WD4pID0+IHtcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMubG9hZGluZyA9IGZhbHNlKVxuICAgICAgKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIG5leHQg5pe26Ieq5Yqo6YeN572u6KGo5Y2VIOaIliDmlLbotbfnvJbovpHlmahcbiAgICovXG4gIHdpdGhBdHRhY2g8WD4oKSB7XG4gICAgcmV0dXJuIChvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFg+KSA9PiBvYnNlcnZhYmxlLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5waW4gPyB0aGlzLnJlc2V0KCkgOiB0aGlzLmRpc21pc3MoKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOWRiOeOsOe8lui+keWZqFxuICAgKi9cbiAgcHJlc2VudCgpIHtcbiAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIOWFs+mXree8lui+keWZqFxuICAgKi9cbiAgZGlzbWlzcygpIHtcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgfVxuXG4gIHRvZ2dsZVBpbigpIHtcbiAgICB0aGlzLnBpbiA9ICF0aGlzLnBpbjtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuZmlsbCh7fSBhcyBUKTtcbiAgfVxuXG4gIGZpbGwobW9kZWw6IFQpIHtcbiAgICB0aGlzLm9yaWdpbmFsTW9kZWwgPSBtb2RlbDtcbiAgICB0aGlzLm1vZGVsID0gbW9kZWw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { form } from '@fluent-form/core';
|
|
1
2
|
export class Searcher {
|
|
2
3
|
constructor() {
|
|
3
4
|
this.model = {};
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
6
|
+
this.schema = form(() => { });
|
|
4
7
|
this.pageSize = 10;
|
|
5
8
|
this.pageNo = 1;
|
|
6
9
|
}
|
|
@@ -9,4 +12,4 @@ export class Searcher {
|
|
|
9
12
|
this.form?.reset({});
|
|
10
13
|
}
|
|
11
14
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91aS16b3Jyby9jcnVkL3NlYXJjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV6QyxNQUFNLE9BQU8sUUFBUTtJQUFyQjtRQUVFLFVBQUssR0FBZSxFQUFFLENBQUM7UUFDdkIsZ0VBQWdFO1FBQ2hFLFdBQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFekIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLFdBQU0sR0FBRyxDQUFDLENBQUM7SUFNYixDQUFDO0lBSkMsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZvcm0gfSBmcm9tICdAZmx1ZW50LWZvcm0vY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBTZWFyY2hlcjxUPiB7XG4gIGZvcm0/OiBGb3JtR3JvdXA7XG4gIG1vZGVsOiBQYXJ0aWFsPFQ+ID0ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgc2NoZW1hID0gZm9ybSgoKSA9PiB7IH0pO1xuXG4gIHBhZ2VTaXplID0gMTA7XG4gIHBhZ2VObyA9IDE7XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5wYWdlTm8gPSAxO1xuICAgIHRoaXMuZm9ybT8ucmVzZXQoe30pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { cascader,
|
|
2
|
-
import { levels2tree, tree2list } from '@solar-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { cascader, datePicker, dateRangePicker, numberField, radioGroup, textField, toggle } from '@fluent-form/ui-zorro';
|
|
2
|
+
import { levels2tree, tree2list } from '@solar-kit/core';
|
|
3
|
+
import { entitiesToOptions } from './helper';
|
|
4
|
+
export function cellphoneField(key = 'cellphone', length = 11) {
|
|
5
|
+
return textField(key).type('tel').length(length);
|
|
5
6
|
}
|
|
6
|
-
export function
|
|
7
|
-
return
|
|
7
|
+
export function integerField(key) {
|
|
8
|
+
return numberField(key).precision(0);
|
|
8
9
|
}
|
|
9
10
|
export function enabledToggle(key = 'enabled', defaultValue = true) {
|
|
10
11
|
return toggle(key).placeholder(['有效', '无效']).defaultValue(defaultValue);
|
|
@@ -19,47 +20,19 @@ export function genderRadioGroup(key = 'gender') {
|
|
|
19
20
|
]);
|
|
20
21
|
}
|
|
21
22
|
export function categoryCascader(key, channels, categories) {
|
|
22
|
-
return
|
|
23
|
+
return leafCascader(key).options(levels2tree([
|
|
24
|
+
entitiesToOptions(channels),
|
|
25
|
+
entitiesToOptions(categories)
|
|
26
|
+
], { id: 'value', pid: 'channel' }));
|
|
23
27
|
}
|
|
24
28
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* 已经配置了 labelProperty: 'fullName', valueProperty: 'id'
|
|
28
|
-
* @param key
|
|
29
|
-
*/
|
|
30
|
-
export function entityCheckboxGroup(key) {
|
|
31
|
-
return checkboxGroup(key).config({ labelProperty: 'fullName', valueProperty: 'id' });
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* 通用的实体单选框
|
|
35
|
-
*
|
|
36
|
-
* 已经配置了 labelProperty: 'fullName', valueProperty: 'id'
|
|
37
|
-
* @param key
|
|
38
|
-
*/
|
|
39
|
-
export function entityRadioGroup(key) {
|
|
40
|
-
return radioGroup(key).config({ labelProperty: 'fullName', valueProperty: 'id' });
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* 通用的实体选择器
|
|
44
|
-
*
|
|
45
|
-
* 已经配置了 labelProperty: 'fullName', valueProperty: 'id'
|
|
46
|
-
* @param key
|
|
47
|
-
*/
|
|
48
|
-
export function entitySelect(key) {
|
|
49
|
-
return select(key).config({ labelProperty: 'fullName', valueProperty: 'id' });
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* 通用的实体联级选择器
|
|
53
|
-
*
|
|
54
|
-
* - 多字段模式下不支持以下选项:
|
|
55
|
-
* - 不支持使用函数作为 options
|
|
56
|
-
* - 不支持 fetchOptions 选项
|
|
29
|
+
* 叶子节点级联选择器
|
|
57
30
|
*
|
|
58
31
|
* options 选项可以使用 `list2tree()` 或 `levels2tree()` 来构造
|
|
59
32
|
*
|
|
60
33
|
* @param key
|
|
61
34
|
*/
|
|
62
|
-
export function
|
|
35
|
+
export function leafCascader(key) {
|
|
63
36
|
let list;
|
|
64
37
|
return cascader(key)
|
|
65
38
|
.trigger('hover')
|
|
@@ -67,29 +40,22 @@ export function entityCascader(key) {
|
|
|
67
40
|
parser: (value, schema) => {
|
|
68
41
|
if (!value)
|
|
69
42
|
return null;
|
|
70
|
-
// 如果输入的是数组,则说明当前是多字段模式,不需要做处理
|
|
71
|
-
if (Array.isArray(value))
|
|
72
|
-
return value;
|
|
73
43
|
// 如果输入的是叶子节点,我们需要转为 [父节点, ..., 叶子节点]
|
|
74
44
|
list ??= tree2list(schema.options);
|
|
75
45
|
// 找到选中的叶子节点
|
|
76
|
-
let node = list.find(node => node.
|
|
46
|
+
let node = list.find(node => node.value === value && (!node.children || node.children.length === 0));
|
|
77
47
|
const levels = [];
|
|
78
48
|
while (node) {
|
|
79
|
-
levels.unshift(node.
|
|
49
|
+
levels.unshift(node.value);
|
|
80
50
|
node = node.parent;
|
|
81
51
|
}
|
|
82
52
|
return levels;
|
|
83
53
|
},
|
|
84
54
|
formatter: value => {
|
|
85
|
-
// 多字段模式,不需要处理
|
|
86
|
-
if (Array.isArray(key))
|
|
87
|
-
return value;
|
|
88
55
|
// 输出的是节点数组,我们只要叶子节点
|
|
89
56
|
return value?.[value.length - 1];
|
|
90
57
|
}
|
|
91
|
-
})
|
|
92
|
-
.config({ labelProperty: 'fullName', valueProperty: 'id' });
|
|
58
|
+
});
|
|
93
59
|
}
|
|
94
60
|
export function datetimePicker(key, format = 'yyyy-MM-dd HH:mm') {
|
|
95
61
|
return datePicker(key)
|
|
@@ -101,4 +67,4 @@ export function datetimeRangePicker(key, format = 'yyyy-MM-dd HH:mm') {
|
|
|
101
67
|
.time({ nzFormat: 'HH:mm' })
|
|
102
68
|
.format(format);
|
|
103
69
|
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91aS16b3Jyby9mbHVlbnQtZm9ybS9jb250cm9scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXVOLFFBQVEsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNVYsT0FBTyxFQUFZLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt2RSxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQUcsR0FBRyxXQUFXLEVBQUUsTUFBTSxHQUFHLEVBQUU7SUFDMUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxHQUFvQjtJQUMxQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsTUFBdUIsU0FBUyxFQUFFLFlBQVksR0FBRyxJQUFJO0lBQ2pGLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUF1QixVQUFVLEVBQUUsWUFBWSxHQUFHLEtBQUs7SUFDcEYsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFlB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QUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxHQUFXLEVBQUUsTUFBTSxHQUFHLGtCQUFrQjtJQUNyRSxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUM7U0FDbkIsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDO1NBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEdBQWMsRUFBRSxNQUFNLEdBQUcsa0JBQWtCO0lBQzdFLE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQztTQUN4QixJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY2hlbWFLZXksIFNpbmdsZVNjaGVtYUtleSwgVW5zdGFibGVCdWlsZGVyIH0gZnJvbSAnQGZsdWVudC1mb3JtL2NvcmUnO1xuaW1wb3J0IHsgQ2FzY2FkZXJDb250cm9sU2NoZW1hLCBDaGVja2JveEdyb3VwQ29udHJvbFNjaGVtYSwgRGF0ZVBpY2tlckNvbnRyb2xTY2hlbWEsIERhdGVSYW5nZVBpY2tlckNvbnRyb2xTY2hlbWEsIE51bWJlckNvbnRyb2xTY2hlbWEsIFJhZGlvR3JvdXBDb250cm9sU2NoZW1hLCBTZWxlY3RDb250cm9sU2NoZW1hLCBUZXh0Q29udHJvbFNjaGVtYSwgVG9nZ2xlQ29udHJvbFNjaGVtYSwgY2FzY2FkZXIsIGNoZWNrYm94R3JvdXAsIGRhdGVQaWNrZXIsIGRhdGVSYW5nZVBpY2tlciwgbnVtYmVyLCByYWRpb0dyb3VwLCBzZWxlY3QsIHRleHQsIHRvZ2dsZSB9IGZyb20gJ0BmbHVlbnQtZm9ybS91aS16b3Jybyc7XG5pbXBvcnQgeyBUcmVlTm9kZSwgbGV2ZWxzMnRyZWUsIHRyZWUybGlzdCB9IGZyb20gJ0Bzb2xhci1hbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2F0ZWdvcnksIENoYW5uZWwgfSBmcm9tICdAc29sYXIta2l0L3BsYW5ldHMvZWFydGgnO1xuaW1wb3J0IHsgR2VuZGVyIH0gZnJvbSAnQHNvbGFyLWtpdC9wbGFuZXRzL3N1bic7XG5pbXBvcnQgeyBLaW5kT3JLZXkgfSBmcm9tICcuL3R5cGluZyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjZWxscGhvbmVUZXh0KGtleSA9ICdjZWxscGhvbmUnLCBsZW5ndGggPSAxMSk6IFVuc3RhYmxlQnVpbGRlcjxUZXh0Q29udHJvbFNjaGVtYSwgS2luZE9yS2V5IHwgJ3R5cGUnIHwgJ2xlbmd0aCc+IHtcbiAgcmV0dXJuIHRleHQoa2V5KS50eXBlKCd0ZWwnKS5sZW5ndGgobGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludGVnZXIoa2V5OiBTaW5nbGVTY2hlbWFLZXkpOiBVbnN0YWJsZUJ1aWxkZXI8TnVtYmVyQ29udHJvbFNjaGVtYSwgS2luZE9yS2V5IHwgJ3ByZWNpc2lvbic+IHtcbiAgcmV0dXJuIG51bWJlcihrZXkpLnByZWNpc2lvbigwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZWRUb2dnbGUoa2V5OiBTaW5nbGVTY2hlbWFLZXkgPSAnZW5hYmxlZCcsIGRlZmF1bHRWYWx1ZSA9IHRydWUpOiBVbnN0YWJsZUJ1aWxkZXI8VG9nZ2xlQ29udHJvbFNjaGVtYSwgS2luZE9yS2V5IHwgJ3BsYWNlaG9sZGVyJyB8ICdkZWZhdWx0VmFsdWUnPiB7XG4gIHJldHVybiB0b2dnbGUoa2V5KS5wbGFjZWhvbGRlcihbJ+acieaViCcsICfml6DmlYgnXSkuZGVmYXVsdFZhbHVlKGRlZmF1bHRWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5pc2hlZFRvZ2dsZShrZXk6IFNpbmdsZVNjaGVtYUtleSA9ICdmaW5pc2hlZCcsIGRlZmF1bHRWYWx1ZSA9IGZhbHNlKTogVW5zdGFibGVCdWlsZGVyPFRvZ2dsZUNvbnRyb2xTY2hlbWEsIEtpbmRPcktleSB8ICdwbGFjZWhvbGRlcicgfCAnZGVmYXVsdFZhbHVlJz4ge1xuICByZXR1cm4gdG9nZ2xlKGtleSkucGxhY2Vob2xkZXIoWyflt7LlrozmiJAnLCAn5pyq5a6M5oiQJ10pLmRlZmF1bHRWYWx1ZShkZWZhdWx0VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZGVyUmFkaW9Hcm91cChrZXkgPSAnZ2VuZGVyJyk6IFVuc3RhYmxlQnVpbGRlcjxSYWRpb0dyb3VwQ29udHJvbFNjaGVtYSwgS2luZE9yS2V5IHwgJ29wdGlvbnMnPiB7XG4gIHJldHVybiByYWRpb0dyb3VwKGtleSkub3B0aW9ucyhbXG4gICAgeyBsYWJlbDogJ+WlsycsIHZhbHVlOiBHZW5kZXIuV29tYW4gfSxcbiAgICB7IGxhYmVsOiAn55S3JywgdmFsdWU6IEdlbmRlci5NYW4gfVxuICBdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhdGVnb3J5Q2FzY2FkZXIoa2V5OiBTY2hlbWFLZXksIGNoYW5uZWxzOiBDaGFubmVsW10sIGNhdGVnb3JpZXM6IENhdGVnb3J5W10pOiBVbnN0YWJsZUJ1aWxkZXI8Q2FzY2FkZXJDb250cm9sU2NoZW1hLCBLaW5kT3JLZXkgfCAnb3B0aW9ucycgfCAndHJpZ2dlcicgfCAnY29uZmlnJyB8ICdtYXBwZXInPiB7XG4gIHJldHVybiBlbnRpdHlDYXNjYWRlcihrZXkpLm9wdGlvbnMobGV2ZWxzMnRyZWUoW2NoYW5uZWxzLCBjYXRlZ29yaWVzXSwgJ2NoYW5uZWwnKSk7XG59XG5cbi8qKlxuICog6YCa55So55qE5a6e5L2T5aSa6YCJ5qGGXG4gKlxuICog5bey57uP6YWN572u5LqGIGxhYmVsUHJvcGVydHk6ICdmdWxsTmFtZScsIHZhbHVlUHJvcGVydHk6ICdpZCdcbiAqIEBwYXJhbSBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVudGl0eUNoZWNrYm94R3JvdXAoa2V5OiBzdHJpbmcpOiBVbnN0YWJsZUJ1aWxkZXI8Q2hlY2tib3hHcm91cENvbnRyb2xTY2hlbWEsIEtpbmRPcktleSB8ICdjb25maWcnPiB7XG4gIHJldHVybiBjaGVja2JveEdyb3VwKGtleSkuY29uZmlnKHsgbGFiZWxQcm9wZXJ0eTogJ2Z1bGxOYW1lJywgdmFsdWVQcm9wZXJ0eTogJ2lkJyB9KTtcbn1cblxuLyoqXG4gKiDpgJrnlKjnmoTlrp7kvZPljZXpgInmoYZcbiAqXG4gKiDlt7Lnu4/phY3nva7kuoYgbGFiZWxQcm9wZXJ0eTogJ2Z1bGxOYW1lJywgdmFsdWVQcm9wZXJ0eTogJ2lkJ1xuICogQHBhcmFtIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW50aXR5UmFkaW9Hcm91cChrZXk6IHN0cmluZyk6IFVuc3RhYmxlQnVpbGRlcjxSYWRpb0dyb3VwQ29udHJvbFNjaGVtYSwgS2luZE9yS2V5IHwgJ2NvbmZpZyc+IHtcbiAgcmV0dXJuIHJhZGlvR3JvdXAoa2V5KS5jb25maWcoeyBsYWJlbFByb3BlcnR5OiAnZnVsbE5hbWUnLCB2YWx1ZVByb3BlcnR5OiAnaWQnIH0pO1xufVxuXG4vKipcbiAqIOmAmueUqOeahOWunuS9k+mAieaLqeWZqFxuICpcbiAqIOW3sue7j+mFjee9ruS6hiBsYWJlbFByb3BlcnR5OiAnZnVsbE5hbWUnLCB2YWx1ZVByb3BlcnR5OiAnaWQnXG4gKiBAcGFyYW0ga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnRpdHlTZWxlY3Qoa2V5OiBTaW5nbGVTY2hlbWFLZXkpOiBVbnN0YWJsZUJ1aWxkZXI8U2VsZWN0Q29udHJvbFNjaGVtYSwgS2luZE9yS2V5IHwgJ2NvbmZpZyc+IHtcbiAgcmV0dXJuIHNlbGVjdChrZXkpLmNvbmZpZyh7IGxhYmVsUHJvcGVydHk6ICdmdWxsTmFtZScsIHZhbHVlUHJvcGVydHk6ICdpZCcgfSk7XG59XG5cbi8qKlxuICog6YCa55So55qE5a6e5L2T6IGU57qn6YCJ5oup5ZmoXG4gKlxuICogLSDlpJrlrZfmrrXmqKHlvI/kuIvkuI3mlK/mjIHku6XkuIvpgInpobnvvJpcbiAqICAgLSDkuI3mlK/mjIHkvb/nlKjlh73mlbDkvZzkuLogb3B0aW9uc1xuICogICAtIOS4jeaUr+aMgSBmZXRjaE9wdGlvbnMg6YCJ6aG5XG4gKlxuICogb3B0aW9ucyDpgInpobnlj6/ku6Xkvb/nlKggYGxpc3QydHJlZSgpYCDmiJYgYGxldmVsczJ0cmVlKClgIOadpeaehOmAoFxuICpcbiAqIEBwYXJhbSBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVudGl0eUNhc2NhZGVyKGtleTogU2NoZW1hS2V5KTogVW5zdGFibGVCdWlsZGVyPENhc2NhZGVyQ29udHJvbFNjaGVtYSwgS2luZE9yS2V5IHwgJ3RyaWdnZXInIHwgJ2NvbmZpZycgfCAnbWFwcGVyJz4ge1xuICBsZXQgbGlzdDogVHJlZU5vZGVbXTtcblxuICByZXR1cm4gY2FzY2FkZXIoa2V5KVxuICAgIC50cmlnZ2VyKCdob3ZlcicpXG4gICAgLm1hcHBlcih7XG4gICAgICBwYXJzZXI6ICh2YWx1ZTogVHJlZU5vZGVbJ2lkJ10gfCBUcmVlTm9kZVsnaWQnXVtdIHwgbnVsbCwgc2NoZW1hKSA9PiB7XG4gICAgICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xuXG4gICAgICAgIC8vIOWmguaenOi+k+WFpeeahOaYr+aVsOe7hO+8jOWImeivtOaYjuW9k+WJjeaYr+WkmuWtl+auteaooeW8j++8jOS4jemcgOimgeWBmuWkhOeQhlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcblxuICAgICAgICAvLyDlpoLmnpzovpPlhaXnmoTmmK/lj7blrZDoioLngrnvvIzmiJHku6zpnIDopoHovazkuLogW+eItuiKgueCuSwgLi4uLCDlj7blrZDoioLngrldXG4gICAgICAgIGxpc3QgPz89IHRyZWUybGlzdCgoc2NoZW1hIGFzIENhc2NhZGVyQ29udHJvbFNjaGVtYSkub3B0aW9ucyBhcyBUcmVlTm9kZVtdKTtcbiAgICAgICAgLy8g5om+5Yiw6YCJ5Lit55qE5Y+25a2Q6IqC54K5XG4gICAgICAgIGxldCBub2RlID0gbGlzdC5maW5kKG5vZGUgPT4gbm9kZS5pZCA9PT0gdmFsdWUgJiYgbm9kZS5pc0xlYWYpO1xuXG4gICAgICAgIGNvbnN0IGxldmVscyA9IFtdO1xuXG4gICAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgICAgbGV2ZWxzLnVuc2hpZnQobm9kZS5pZCk7XG4gICAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxldmVscztcbiAgICAgIH0sXG4gICAgICBmb3JtYXR0ZXI6IHZhbHVlID0+IHtcbiAgICAgICAgLy8g5aSa5a2X5q615qih5byP77yM5LiN6ZyA6KaB5aSE55CGXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGtleSkpIHJldHVybiB2YWx1ZTtcblxuICAgICAgICAvLyDovpPlh7rnmoTmmK/oioLngrnmlbDnu4TvvIzmiJHku6zlj6ropoHlj7blrZDoioLngrlcbiAgICAgICAgcmV0dXJuIHZhbHVlPy5bdmFsdWUubGVuZ3RoIC0gMV07XG4gICAgICB9XG4gICAgfSlcbiAgICAuY29uZmlnKHsgbGFiZWxQcm9wZXJ0eTogJ2Z1bGxOYW1lJywgdmFsdWVQcm9wZXJ0eTogJ2lkJyB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGV0aW1lUGlja2VyKGtleTogc3RyaW5nLCBmb3JtYXQgPSAneXl5eS1NTS1kZCBISDptbScpOiBVbnN0YWJsZUJ1aWxkZXI8RGF0ZVBpY2tlckNvbnRyb2xTY2hlbWEsIEtpbmRPcktleSB8ICd0aW1lJyB8ICdmb3JtYXQnPiB7XG4gIHJldHVybiBkYXRlUGlja2VyKGtleSlcbiAgICAudGltZSh7IG56Rm9ybWF0OiAnSEg6bW0nIH0pXG4gICAgLmZvcm1hdChmb3JtYXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZXRpbWVSYW5nZVBpY2tlcihrZXk6IFNjaGVtYUtleSwgZm9ybWF0ID0gJ3l5eXktTU0tZGQgSEg6bW0nKTogVW5zdGFibGVCdWlsZGVyPERhdGVSYW5nZVBpY2tlckNvbnRyb2xTY2hlbWEsIEtpbmRPcktleSB8ICd0aW1lJyB8ICdmb3JtYXQnPiB7XG4gIHJldHVybiBkYXRlUmFuZ2VQaWNrZXIoa2V5KVxuICAgIC50aW1lKHsgbnpGb3JtYXQ6ICdISDptbScgfSlcbiAgICAuZm9ybWF0KGZvcm1hdCk7XG59XG4iXX0=
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91aS16b3Jyby9mbHVlbnQtZm9ybS9jb250cm9scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWdMLFFBQVEsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hTLE9BQU8sRUFBWSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRzdDLE1BQU0sVUFBVSxjQUFjLENBQUMsR0FBRyxHQUFHLFdBQVcsRUFBRSxNQUFNLEdBQUcsRUFBRTtJQUMzRCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQW9CO0lBQy9DLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUF1QixTQUFTLEVBQUUsWUFBWSxHQUFHLElBQUk7SUFDakYsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzFFLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQXVCLFVBQVUsRUFBRSxZQUFZLEdBQUcsS0FBSztJQUNwRixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDNUUsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsUUFBUTtJQUM3QyxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDN0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssc0JBQWMsRUFBRTtRQUNuQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxvQkFBWSxFQUFFO0tBQ2xDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsR0FBb0IsRUFBRSxRQUFtQixFQUFFLFVBQXNCO0lBQ2hHLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FDOUIsV0FBVyxDQUNUO1FBQ0UsaUJBQWlCLENBQUMsUUFBZ0UsQ0FBQztRQUNuRixpQkFBaUIsQ0FBQyxVQUFVLENBQUM7S0FDOUIsRUFDRCxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUNoQyxDQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxHQUFvQjtJQUMvQyxJQUFJLElBQXdCLENBQUM7SUFFN0IsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDO1NBQ2pCLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDaEIsTUFBTSxDQUFDO1FBQ04sTUFBTSxFQUFFLENBQUMsS0FBdUMsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMxRCxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUV4QixxQ0FBcUM7WUFDckMsSUFBSSxLQUFLLFNBQVMsQ0FBRSxNQUFnQyxDQUFDLE9BQXVDLENBQUMsQ0FBQztZQUM5RixZQUFZO1lBQ1osSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFckcsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBRWxCLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQ1osTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNCLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3JCLENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQ0QsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ2pCLG9CQUFvQjtZQUNwQixPQUFPLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkMsQ0FBQztLQUNGLENBQUMsQ0FBQTtBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLEdBQVcsRUFBRSxNQUFNLEdBQUcsa0JBQWtCO0lBQ3JFLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQztTQUNuQixJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BCLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsR0FBYyxFQUFFLE1BQU0sR0FBRyxrQkFBa0I7SUFDN0UsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDO1NBQ3hCLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQztTQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjaGVtYUtleSwgU2luZ2xlU2NoZW1hS2V5LCBVbnN0YWJsZUJ1aWxkZXIgfSBmcm9tICdAZmx1ZW50LWZvcm0vY29yZSc7XG5pbXBvcnQgeyBDYXNjYWRlckNvbnRyb2xTY2hlbWEsIERhdGVQaWNrZXJDb250cm9sU2NoZW1hLCBEYXRlUmFuZ2VQaWNrZXJDb250cm9sU2NoZW1hLCBOdW1iZXJGaWVsZENvbnRyb2xTY2hlbWEsIFJhZGlvR3JvdXBDb250cm9sU2NoZW1hLCBUZXh0RmllbGRDb250cm9sU2NoZW1hLCBUb2dnbGVDb250cm9sU2NoZW1hLCBjYXNjYWRlciwgZGF0ZVBpY2tlciwgZGF0ZVJhbmdlUGlja2VyLCBudW1iZXJGaWVsZCwgcmFkaW9Hcm91cCwgdGV4dEZpZWxkLCB0b2dnbGUgfSBmcm9tICdAZmx1ZW50LWZvcm0vdWktem9ycm8nO1xuaW1wb3J0IHsgVHJlZU5vZGUsIGxldmVsczJ0cmVlLCB0cmVlMmxpc3QgfSBmcm9tICdAc29sYXIta2l0L2NvcmUnO1xuaW1wb3J0IHsgQ2F0ZWdvcnksIENoYW5uZWwgfSBmcm9tICdAc29sYXIta2l0L3BsYW5ldHMvZWFydGgnO1xuaW1wb3J0IHsgR2VuZGVyIH0gZnJvbSAnQHNvbGFyLWtpdC9wbGFuZXRzL3N1bic7XG5pbXBvcnQgeyBOekNhc2NhZGVyT3B0aW9uIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jYXNjYWRlcic7XG5pbXBvcnQgeyBlbnRpdGllc1RvT3B0aW9ucyB9IGZyb20gJy4vaGVscGVyJztcbmltcG9ydCB7IEtpbmRPcktleSB9IGZyb20gJy4vdHlwaW5nJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNlbGxwaG9uZUZpZWxkKGtleSA9ICdjZWxscGhvbmUnLCBsZW5ndGggPSAxMSk6IFVuc3RhYmxlQnVpbGRlcjxUZXh0RmllbGRDb250cm9sU2NoZW1hLCBLaW5kT3JLZXkgfCAndHlwZScgfCAnbGVuZ3RoJz4ge1xuICByZXR1cm4gdGV4dEZpZWxkKGtleSkudHlwZSgndGVsJykubGVuZ3RoKGxlbmd0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnRlZ2VyRmllbGQoa2V5OiBTaW5nbGVTY2hlbWFLZXkpOiBVbnN0YWJsZUJ1aWxkZXI8TnVtYmVyRmllbGRDb250cm9sU2NoZW1hLCBLaW5kT3JLZXkgfCAncHJlY2lzaW9uJz4ge1xuICByZXR1cm4gbnVtYmVyRmllbGQoa2V5KS5wcmVjaXNpb24oMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVkVG9nZ2xlKGtleTogU2luZ2xlU2NoZW1hS2V5ID0gJ2VuYWJsZWQnLCBkZWZhdWx0VmFsdWUgPSB0cnVlKTogVW5zdGFibGVCdWlsZGVyPFRvZ2dsZUNvbnRyb2xTY2hlbWEsIEtpbmRPcktleSB8ICdwbGFjZWhvbGRlcicgfCAnZGVmYXVsdFZhbHVlJz4ge1xuICByZXR1cm4gdG9nZ2xlKGtleSkucGxhY2Vob2xkZXIoWyfmnInmlYgnLCAn5peg5pWIJ10pLmRlZmF1bHRWYWx1ZShkZWZhdWx0VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluaXNoZWRUb2dnbGUoa2V5OiBTaW5nbGVTY2hlbWFLZXkgPSAnZmluaXNoZWQnLCBkZWZhdWx0VmFsdWUgPSBmYWxzZSk6IFVuc3RhYmxlQnVpbGRlcjxUb2dnbGVDb250cm9sU2NoZW1hLCBLaW5kT3JLZXkgfCAncGxhY2Vob2xkZXInIHwgJ2RlZmF1bHRWYWx1ZSc+IHtcbiAgcmV0dXJuIHRvZ2dsZShrZXkpLnBsYWNlaG9sZGVyKFsn5bey5a6M5oiQJywgJ+acquWujOaIkCddKS5kZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmRlclJhZGlvR3JvdXAoa2V5ID0gJ2dlbmRlcicpOiBVbnN0YWJsZUJ1aWxkZXI8UmFkaW9Hcm91cENvbnRyb2xTY2hlbWEsIEtpbmRPcktleSB8ICdvcHRpb25zJz4ge1xuICByZXR1cm4gcmFkaW9Hcm91cChrZXkpLm9wdGlvbnMoW1xuICAgIHsgbGFiZWw6ICflpbMnLCB2YWx1ZTogR2VuZGVyLldvbWFuIH0sXG4gICAgeyBsYWJlbDogJ+eUtycsIHZhbHVlOiBHZW5kZXIuTWFuIH1cbiAgXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYXRlZ29yeUNhc2NhZGVyKGtleTogU2luZ2xlU2NoZW1hS2V5LCBjaGFubmVsczogQ2hhbm5lbFtdLCBjYXRlZ29yaWVzOiBDYXRlZ29yeVtdKTogVW5zdGFibGVCdWlsZGVyPENhc2NhZGVyQ29udHJvbFNjaGVtYTxTaW5nbGVTY2hlbWFLZXk+LCBLaW5kT3JLZXkgfCAnb3B0aW9ucycgfCAndHJpZ2dlcicgfCAnbWFwcGVyJz4ge1xuICByZXR1cm4gbGVhZkNhc2NhZGVyKGtleSkub3B0aW9ucyhcbiAgICBsZXZlbHMydHJlZShcbiAgICAgIFtcbiAgICAgICAgZW50aXRpZXNUb09wdGlvbnMoY2hhbm5lbHMgYXMgeyBpZDogbnVtYmVyLCBmdWxsTmFtZTogc3RyaW5nLCBjaGFubmVsPzogbnVtYmVyIH1bXSksXG4gICAgICAgIGVudGl0aWVzVG9PcHRpb25zKGNhdGVnb3JpZXMpXG4gICAgICBdLFxuICAgICAgeyBpZDogJ3ZhbHVlJywgcGlkOiAnY2hhbm5lbCcgfVxuICAgIClcbiAgKTtcbn1cblxuLyoqXG4gKiDlj7blrZDoioLngrnnuqfogZTpgInmi6nlmahcbiAqXG4gKiBvcHRpb25zIOmAiemhueWPr+S7peS9v+eUqCBgbGlzdDJ0cmVlKClgIOaIliBgbGV2ZWxzMnRyZWUoKWAg5p2l5p6E6YCgXG4gKlxuICogQHBhcmFtIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gbGVhZkNhc2NhZGVyKGtleTogU2luZ2xlU2NoZW1hS2V5KTogVW5zdGFibGVCdWlsZGVyPENhc2NhZGVyQ29udHJvbFNjaGVtYTxTaW5nbGVTY2hlbWFLZXk+LCBLaW5kT3JLZXkgfCAndHJpZ2dlcicgfCAnbWFwcGVyJz4ge1xuICBsZXQgbGlzdDogTnpDYXNjYWRlck9wdGlvbltdO1xuXG4gIHJldHVybiBjYXNjYWRlcihrZXkpXG4gICAgLnRyaWdnZXIoJ2hvdmVyJylcbiAgICAubWFwcGVyKHtcbiAgICAgIHBhcnNlcjogKHZhbHVlOiBOekNhc2NhZGVyT3B0aW9uWyd2YWx1ZSddIHwgbnVsbCwgc2NoZW1hKSA9PiB7XG4gICAgICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xuXG4gICAgICAgIC8vIOWmguaenOi+k+WFpeeahOaYr+WPtuWtkOiKgueCue+8jOaIkeS7rOmcgOimgei9rOS4uiBb54i26IqC54K5LCAuLi4sIOWPtuWtkOiKgueCuV1cbiAgICAgICAgbGlzdCA/Pz0gdHJlZTJsaXN0KChzY2hlbWEgYXMgQ2FzY2FkZXJDb250cm9sU2NoZW1hKS5vcHRpb25zIGFzIFRyZWVOb2RlPE56Q2FzY2FkZXJPcHRpb24+W10pO1xuICAgICAgICAvLyDmib7liLDpgInkuK3nmoTlj7blrZDoioLngrlcbiAgICAgICAgbGV0IG5vZGUgPSBsaXN0LmZpbmQobm9kZSA9PiBub2RlLnZhbHVlID09PSB2YWx1ZSAmJiAoIW5vZGUuY2hpbGRyZW4gfHwgbm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDApKTtcblxuICAgICAgICBjb25zdCBsZXZlbHMgPSBbXTtcblxuICAgICAgICB3aGlsZSAobm9kZSkge1xuICAgICAgICAgIGxldmVscy51bnNoaWZ0KG5vZGUudmFsdWUpO1xuICAgICAgICAgIG5vZGUgPSBub2RlLnBhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsZXZlbHM7XG4gICAgICB9LFxuICAgICAgZm9ybWF0dGVyOiB2YWx1ZSA9PiB7XG4gICAgICAgIC8vIOi+k+WHuueahOaYr+iKgueCueaVsOe7hO+8jOaIkeS7rOWPquimgeWPtuWtkOiKgueCuVxuICAgICAgICByZXR1cm4gdmFsdWU/Llt2YWx1ZS5sZW5ndGggLSAxXTtcbiAgICAgIH1cbiAgICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZXRpbWVQaWNrZXIoa2V5OiBzdHJpbmcsIGZvcm1hdCA9ICd5eXl5LU1NLWRkIEhIOm1tJyk6IFVuc3RhYmxlQnVpbGRlcjxEYXRlUGlja2VyQ29udHJvbFNjaGVtYSwgS2luZE9yS2V5IHwgJ3RpbWUnIHwgJ2Zvcm1hdCc+IHtcbiAgcmV0dXJuIGRhdGVQaWNrZXIoa2V5KVxuICAgIC50aW1lKHsgbnpGb3JtYXQ6ICdISDptbScgfSlcbiAgICAuZm9ybWF0KGZvcm1hdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRldGltZVJhbmdlUGlja2VyKGtleTogU2NoZW1hS2V5LCBmb3JtYXQgPSAneXl5eS1NTS1kZCBISDptbScpOiBVbnN0YWJsZUJ1aWxkZXI8RGF0ZVJhbmdlUGlja2VyQ29udHJvbFNjaGVtYSwgS2luZE9yS2V5IHwgJ3RpbWUnIHwgJ2Zvcm1hdCc+IHtcbiAgcmV0dXJuIGRhdGVSYW5nZVBpY2tlcihrZXkpXG4gICAgLnRpbWUoeyBuekZvcm1hdDogJ0hIOm1tJyB9KVxuICAgIC5mb3JtYXQoZm9ybWF0KTtcbn1cbiJdfQ==
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { form } from '@fluent-form/core';
|
|
2
|
-
import { headless } from '@fluent-form/ui-zorro';
|
|
1
|
+
import { form, headless } from '@fluent-form/core';
|
|
3
2
|
/**
|
|
4
3
|
* 实体表单
|
|
5
4
|
*
|
|
@@ -12,4 +11,4 @@ export function entityForm(composeFn) {
|
|
|
12
11
|
composeFn();
|
|
13
12
|
});
|
|
14
13
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3VpLXpvcnJvL2ZsdWVudC1mb3JtL2Zvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUduRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsU0FBMEI7SUFDbkQsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ2YsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2YsU0FBUyxFQUFFLENBQUM7SUFDZCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtLCBoZWFkbGVzcyB9IGZyb20gJ0BmbHVlbnQtZm9ybS9jb3JlJztcbmltcG9ydCB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbi8qKlxuICog5a6e5L2T6KGo5Y2VXG4gKlxuICog5YaF572u5LqG5LiA5LiqIEhlYWRsZXNzIElEIOaOp+S7tuWbvuekuu+8mmBoZWFkbGVzcygnaWQnKWBcbiAqIEBwYXJhbSBzY2hlbWFzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnRpdHlGb3JtKGNvbXBvc2VGbjogKCkgPT4gTnpTYWZlQW55KSB7XG4gIHJldHVybiBmb3JtKCgpID0+IHtcbiAgICBoZWFkbGVzcygnaWQnKTtcbiAgICBjb21wb3NlRm4oKTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export function entityToOption(entity) {
|
|
2
|
-
return { label: entity.fullName, value: entity.id };
|
|
2
|
+
return { label: entity.fullName, value: entity.id, ...entity };
|
|
3
3
|
}
|
|
4
|
-
|
|
4
|
+
export function entitiesToOptions(entities) {
|
|
5
|
+
return entities.map(entity => entityToOption(entity));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvdWktem9ycm8vZmx1ZW50LWZvcm0vaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE1BQU0sVUFBVSxjQUFjLENBQXNELE1BQVM7SUFDM0YsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7QUFDakUsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBc0QsUUFBYTtJQUNsRyxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN4RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgZnVuY3Rpb24gZW50aXR5VG9PcHRpb248VCBleHRlbmRzIHsgaWQ6IHN0cmluZyB8IG51bWJlciwgZnVsbE5hbWU6IHN0cmluZyB9PihlbnRpdHk6IFQpIHtcbiAgcmV0dXJuIHsgbGFiZWw6IGVudGl0eS5mdWxsTmFtZSwgdmFsdWU6IGVudGl0eS5pZCwgLi4uZW50aXR5IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnRpdGllc1RvT3B0aW9uczxUIGV4dGVuZHMgeyBpZDogc3RyaW5nIHwgbnVtYmVyLCBmdWxsTmFtZTogc3RyaW5nIH0+KGVudGl0aWVzOiBUW10pIHtcbiAgcmV0dXJuIGVudGl0aWVzLm1hcChlbnRpdHkgPT4gZW50aXR5VG9PcHRpb24oZW50aXR5KSk7XG59XG4iXX0=
|
|
@@ -107,6 +107,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
107
107
|
class Searcher {
|
|
108
108
|
constructor() {
|
|
109
109
|
this.model = {};
|
|
110
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
111
|
+
this.schema = form(() => { });
|
|
110
112
|
this.pageSize = 10;
|
|
111
113
|
this.pageNo = 1;
|
|
112
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solar-angular-ui-zorro-crud.mjs","sources":["../../../packages/ui-zorro/crud/editor.ts","../../../packages/ui-zorro/crud/editor-drawer/editor-drawer.component.ts","../../../packages/ui-zorro/crud/editor-drawer/editor-drawer.component.html","../../../packages/ui-zorro/crud/searcher.ts","../../../packages/ui-zorro/crud/page.ts","../../../packages/ui-zorro/crud/solar-angular-ui-zorro-crud.ts"],"sourcesContent":["import { FormGroup } from '@angular/forms';\nimport { AbstractFormGroupSchema, form } from '@fluent-form/core';\nimport { Observable, finalize, tap } from 'rxjs';\n\nexport class Editor<T> {\n private _visible = false;\n /** 模型初始值 */\n originalModel: T = {} as T;\n model: T = {} as T;\n loading = false;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n schema: AbstractFormGroupSchema = form(() => { });\n /** 是否在保存完之后固定抽屉 */\n pin = false;\n form?: FormGroup;\n\n get visible(): boolean {\n return this._visible;\n }\n\n set visible(value: boolean) {\n // 手动判断一下,因为双向绑定的原因,这里会被设置两次\n if (this._visible !== value) {\n if (!value) {\n this.reset(); // 关闭的时候自动重置\n }\n }\n this._visible = value;\n }\n\n /**\n * 自动控制 loading 状态\n */\n withLoading<X>() {\n this.loading = true;\n return (observable: Observable<X>) => {\n return observable.pipe(\n finalize(() => this.loading = false)\n );\n };\n }\n\n /**\n * next 时自动重置表单 或 收起编辑器\n */\n withAttach<X>() {\n return (observable: Observable<X>) => observable.pipe(\n tap(() => this.pin ? this.reset() : this.dismiss())\n );\n }\n\n /**\n * 呈现编辑器\n */\n present() {\n this.visible = true;\n }\n\n /**\n * 关闭编辑器\n */\n dismiss() {\n this.visible = false;\n }\n\n togglePin() {\n this.pin = !this.pin;\n }\n\n reset() {\n this.fill({} as T);\n }\n\n fill(model: T) {\n this.originalModel = model;\n this.model = model;\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NzDrawerModule } from 'ng-zorro-antd/drawer';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { NzTypographyModule } from 'ng-zorro-antd/typography';\nimport { Editor } from '../editor';\n\n@Component({\n selector: 'sun-editor-drawer',\n standalone: true,\n imports: [\n NzDrawerModule,\n NzSpinModule,\n NzIconModule,\n NzTypographyModule\n ],\n templateUrl: './editor-drawer.component.html',\n styleUrl: './editor-drawer.component.scss'\n})\nexport class SunEditorDrawer<T extends Record<string, any>> {\n @Input() editor!: Editor<T>;\n @Input() width: string | number = 600;\n // TODO: 有些 model 不一定有 primaryKey,可能是两个 foreignKeys,所以要考虑将 operation 变为一个函数\n // 考虑直接做到 signal 版本里,这里就变成一个 computed fn\n @Input() primaryKey = 'id';\n\n @Output() visibleChange = new EventEmitter<boolean>();\n}\n","<nz-drawer\n nzWrapClassName=\"sun-editor-drawer-wrapper\"\n [nzWidth]=\"width\"\n [nzClosable]=\"false\"\n [nzTitle]=\"editorTitle\"\n [nzFooter]=\"editorFooter\"\n [(nzVisible)]=\"editor.visible\"\n (nzVisibleChange)=\"visibleChange.emit($event)\"\n (nzOnClose)=\"editor.visible = false\"\n>\n <nz-spin *nzDrawerContent [nzSpinning]=\"editor.loading\">\n <ng-content />\n </nz-spin>\n</nz-drawer>\n\n<ng-template #editorTitle>\n <div>{{ editor.model[primaryKey] ? '编辑条目' : '新增条目' }}</div>\n\n <span\n nz-icon\n nzType=\"pushpin\"\n [nzTheme]=\"editor.pin ? 'twotone' : 'outline'\"\n (click)=\"editor.togglePin()\"\n ></span>\n</ng-template>\n\n<ng-template #editorFooter>\n <small nz-typography nzType=\"secondary\">\n 注意:标签上带有\n <span nz-typography nzType=\"danger\" style=\"font-family: SimSun, sans-serif\"\n >*</span\n >\n 符号的项目为必填项\n </small>\n</ng-template>\n","import { FormGroup } from '@angular/forms';\nimport { AbstractFormGroupSchema } from '@fluent-form/core';\n\nexport class Searcher<T> {\n form?: FormGroup;\n model: Partial<T> = {};\n schema!: AbstractFormGroupSchema;\n\n pageSize = 10;\n pageNo = 1;\n\n reset() {\n this.pageNo = 1;\n this.form?.reset({});\n }\n}\n","import { inject } from '@angular/core';\nimport { MessageService } from '@solar-angular/ui-zorro/message';\nimport { finalize, Observable } from 'rxjs';\nimport { Editor } from './editor';\nimport { Searcher } from './searcher';\n\n/**\n * 增删改查页面\n * @template T Searcher 的模型类型\n * @template U Editor 的模型类型,默认为 T\n * @template V Data 的模型类型,默认为 U\n */\nexport abstract class CrudPage<T, U = T, V = U> {\n protected data: V[] = [];\n\n protected loading = false;\n\n protected searcher = new Searcher<T>();\n protected editor = new Editor<U>();\n\n /**\n * @deprecated 请使用 {@link Searcher.pageSize}\n */\n protected get pageSize() {\n return this.searcher.pageSize;\n }\n /**\n * @deprecated 请使用 {@link Searcher.pageSize}\n */\n protected set pageSize(value) {\n this.searcher.pageSize = value;\n }\n /**\n * @deprecated 请使用 {@link Searcher.pageNo}\n */\n protected get pageNo() {\n return this.searcher.pageNo;\n }\n /**\n * @deprecated 请使用 {@link Searcher.pageNo}\n */\n protected set pageNo(value) {\n this.searcher.pageNo = value;\n }\n\n readonly message = inject(MessageService);\n\n protected withTableLoading<X>() {\n return (observable: Observable<X>) => {\n this.loading = true;\n return observable.pipe(\n finalize(() => this.loading = false)\n );\n };\n }\n\n /**\n * {@link MessageService.withLoading()} 的快捷方式\n * @param content\n */\n protected withLoading<X>(content?: string) {\n return this.message.withLoading<X>(content);\n }\n\n /**\n * {@link MessageService.withDeleteLoading()} 的快捷方式\n * @param content\n */\n protected withDeleteLoading<X>() {\n return this.message.withDeleteLoading<X>();\n }\n\n /**\n * {@link MessageService.withSaveLoading()} 的快捷方式\n * @param content\n */\n protected withSaveLoading<X>() {\n return this.message.withSaveLoading<X>();\n }\n\n /**\n * 编辑\n * @param entity\n */\n protected edit(entity: U) {\n this.editor.fill(entity);\n this.editor.present();\n }\n}\n\n/**\n * 带分页的增删改查页面\n * @template T Searcher 的模型类型\n * @template U Editor 的模型类型,默认为 T\n * @template V Data 的模型类型,默认为 U\n */\nexport abstract class PagingCrudPage<T, U = T, V = U> extends CrudPage<T, U, V> {\n protected totalSize!: number;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;MAIa,MAAM,CAAA;AAAnB,IAAA,WAAA,GAAA;QACU,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;QAEzB,IAAa,CAAA,aAAA,GAAM,EAAO,CAAC;QAC3B,IAAK,CAAA,KAAA,GAAM,EAAO,CAAC;QACnB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;;QAEhB,IAAM,CAAA,MAAA,GAA4B,IAAI,CAAC,MAAQ,GAAC,CAAC,CAAC;;QAElD,IAAG,CAAA,GAAA,GAAG,KAAK,CAAC;KAgEb;AA7DC,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,IAAI,OAAO,CAAC,KAAc,EAAA;;AAExB,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC3B,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;SACF;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,OAAO,CAAC,UAAyB,KAAI;AACnC,YAAA,OAAO,UAAU,CAAC,IAAI,CACpB,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CACrC,CAAC;AACJ,SAAC,CAAC;KACH;AAED;;AAEG;IACH,UAAU,GAAA;AACR,QAAA,OAAO,CAAC,UAAyB,KAAK,UAAU,CAAC,IAAI,CACnD,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CACpD,CAAC;KACH;AAED;;AAEG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACrB;AAED;;AAEG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;KACtB;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,EAAO,CAAC,CAAC;KACpB;AAED,IAAA,IAAI,CAAC,KAAQ,EAAA;AACX,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AACF;;MC1DY,eAAe,CAAA;AAZ5B,IAAA,WAAA,GAAA;QAcW,IAAK,CAAA,KAAA,GAAoB,GAAG,CAAC;;;QAG7B,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAEjB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW,CAAC;AACvD,KAAA;+GARY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnB5B,ihCAmCA,EDxBI,MAAA,EAAA,CAAA,yHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,+mBACd,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gIAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAKT,eAAe,EAAA,UAAA,EAAA,CAAA;kBAZ3B,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EACP,OAAA,EAAA;wBACP,cAAc;wBACd,YAAY;wBACZ,YAAY;wBACZ,kBAAkB;AACnB,qBAAA,EAAA,QAAA,EAAA,ihCAAA,EAAA,MAAA,EAAA,CAAA,yHAAA,CAAA,EAAA,CAAA;8BAKQ,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAGG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEI,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;MEvBI,QAAQ,CAAA;AAArB,IAAA,WAAA,GAAA;QAEE,IAAK,CAAA,KAAA,GAAe,EAAE,CAAC;QAGvB,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;QACd,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;KAMZ;IAJC,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;KACtB;AACF;;ACTD;;;;;AAKG;MACmB,QAAQ,CAAA;AAA9B,IAAA,WAAA,GAAA;QACY,IAAI,CAAA,IAAA,GAAQ,EAAE,CAAC;QAEf,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAEhB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,QAAQ,EAAK,CAAC;AAC7B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,MAAM,EAAK,CAAC;AA2B1B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;KA2C3C;AApEC;;AAEG;AACH,IAAA,IAAc,QAAQ,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;KAC/B;AACD;;AAEG;IACH,IAAc,QAAQ,CAAC,KAAK,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;KAChC;AACD;;AAEG;AACH,IAAA,IAAc,MAAM,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;KAC7B;AACD;;AAEG;IACH,IAAc,MAAM,CAAC,KAAK,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;KAC9B;IAIS,gBAAgB,GAAA;QACxB,OAAO,CAAC,UAAyB,KAAI;AACnC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,YAAA,OAAO,UAAU,CAAC,IAAI,CACpB,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CACrC,CAAC;AACJ,SAAC,CAAC;KACH;AAED;;;AAGG;AACO,IAAA,WAAW,CAAI,OAAgB,EAAA;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAI,OAAO,CAAC,CAAC;KAC7C;AAED;;;AAGG;IACO,iBAAiB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAK,CAAC;KAC5C;AAED;;;AAGG;IACO,eAAe,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAK,CAAC;KAC1C;AAED;;;AAGG;AACO,IAAA,IAAI,CAAC,MAAS,EAAA;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;KACvB;AACF,CAAA;AAED;;;;;AAKG;AACG,MAAgB,cAAgC,SAAQ,QAAiB,CAAA;AAE9E;;AClGD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"solar-angular-ui-zorro-crud.mjs","sources":["../../../packages/ui-zorro/crud/editor.ts","../../../packages/ui-zorro/crud/editor-drawer/editor-drawer.component.ts","../../../packages/ui-zorro/crud/editor-drawer/editor-drawer.component.html","../../../packages/ui-zorro/crud/searcher.ts","../../../packages/ui-zorro/crud/page.ts","../../../packages/ui-zorro/crud/solar-angular-ui-zorro-crud.ts"],"sourcesContent":["import { FormGroup } from '@angular/forms';\nimport { form } from '@fluent-form/core';\nimport { Observable, finalize, tap } from 'rxjs';\n\nexport class Editor<T> {\n private _visible = false;\n /** 模型初始值 */\n originalModel: T = {} as T;\n model: T = {} as T;\n loading = false;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n schema = form(() => { });\n /** 是否在保存完之后固定抽屉 */\n pin = false;\n form?: FormGroup;\n\n get visible(): boolean {\n return this._visible;\n }\n\n set visible(value: boolean) {\n // 手动判断一下,因为双向绑定的原因,这里会被设置两次\n if (this._visible !== value) {\n if (!value) {\n this.reset(); // 关闭的时候自动重置\n }\n }\n this._visible = value;\n }\n\n /**\n * 自动控制 loading 状态\n */\n withLoading<X>() {\n this.loading = true;\n return (observable: Observable<X>) => {\n return observable.pipe(\n finalize(() => this.loading = false)\n );\n };\n }\n\n /**\n * next 时自动重置表单 或 收起编辑器\n */\n withAttach<X>() {\n return (observable: Observable<X>) => observable.pipe(\n tap(() => this.pin ? this.reset() : this.dismiss())\n );\n }\n\n /**\n * 呈现编辑器\n */\n present() {\n this.visible = true;\n }\n\n /**\n * 关闭编辑器\n */\n dismiss() {\n this.visible = false;\n }\n\n togglePin() {\n this.pin = !this.pin;\n }\n\n reset() {\n this.fill({} as T);\n }\n\n fill(model: T) {\n this.originalModel = model;\n this.model = model;\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NzDrawerModule } from 'ng-zorro-antd/drawer';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { NzTypographyModule } from 'ng-zorro-antd/typography';\nimport { Editor } from '../editor';\n\n@Component({\n selector: 'sun-editor-drawer',\n standalone: true,\n imports: [\n NzDrawerModule,\n NzSpinModule,\n NzIconModule,\n NzTypographyModule\n ],\n templateUrl: './editor-drawer.component.html',\n styleUrl: './editor-drawer.component.scss'\n})\nexport class SunEditorDrawer<T extends Record<string, any>> {\n @Input() editor!: Editor<T>;\n @Input() width: string | number = 600;\n // TODO: 有些 model 不一定有 primaryKey,可能是两个 foreignKeys,所以要考虑将 operation 变为一个函数\n // 考虑直接做到 signal 版本里,这里就变成一个 computed fn\n @Input() primaryKey = 'id';\n\n @Output() visibleChange = new EventEmitter<boolean>();\n}\n","<nz-drawer\n nzWrapClassName=\"sun-editor-drawer-wrapper\"\n [nzWidth]=\"width\"\n [nzClosable]=\"false\"\n [nzTitle]=\"editorTitle\"\n [nzFooter]=\"editorFooter\"\n [(nzVisible)]=\"editor.visible\"\n (nzVisibleChange)=\"visibleChange.emit($event)\"\n (nzOnClose)=\"editor.visible = false\"\n>\n <nz-spin *nzDrawerContent [nzSpinning]=\"editor.loading\">\n <ng-content />\n </nz-spin>\n</nz-drawer>\n\n<ng-template #editorTitle>\n <div>{{ editor.model[primaryKey] ? '编辑条目' : '新增条目' }}</div>\n\n <span\n nz-icon\n nzType=\"pushpin\"\n [nzTheme]=\"editor.pin ? 'twotone' : 'outline'\"\n (click)=\"editor.togglePin()\"\n ></span>\n</ng-template>\n\n<ng-template #editorFooter>\n <small nz-typography nzType=\"secondary\">\n 注意:标签上带有\n <span nz-typography nzType=\"danger\" style=\"font-family: SimSun, sans-serif\"\n >*</span\n >\n 符号的项目为必填项\n </small>\n</ng-template>\n","import { FormGroup } from '@angular/forms';\nimport { form } from '@fluent-form/core';\n\nexport class Searcher<T> {\n form?: FormGroup;\n model: Partial<T> = {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n schema = form(() => { });\n\n pageSize = 10;\n pageNo = 1;\n\n reset() {\n this.pageNo = 1;\n this.form?.reset({});\n }\n}\n","import { inject } from '@angular/core';\nimport { MessageService } from '@solar-angular/ui-zorro/message';\nimport { finalize, Observable } from 'rxjs';\nimport { Editor } from './editor';\nimport { Searcher } from './searcher';\n\n/**\n * 增删改查页面\n * @template T Searcher 的模型类型\n * @template U Editor 的模型类型,默认为 T\n * @template V Data 的模型类型,默认为 U\n */\nexport abstract class CrudPage<T, U = T, V = U> {\n protected data: V[] = [];\n\n protected loading = false;\n\n protected searcher = new Searcher<T>();\n protected editor = new Editor<U>();\n\n /**\n * @deprecated 请使用 {@link Searcher.pageSize}\n */\n protected get pageSize() {\n return this.searcher.pageSize;\n }\n /**\n * @deprecated 请使用 {@link Searcher.pageSize}\n */\n protected set pageSize(value) {\n this.searcher.pageSize = value;\n }\n /**\n * @deprecated 请使用 {@link Searcher.pageNo}\n */\n protected get pageNo() {\n return this.searcher.pageNo;\n }\n /**\n * @deprecated 请使用 {@link Searcher.pageNo}\n */\n protected set pageNo(value) {\n this.searcher.pageNo = value;\n }\n\n readonly message = inject(MessageService);\n\n protected withTableLoading<X>() {\n return (observable: Observable<X>) => {\n this.loading = true;\n return observable.pipe(\n finalize(() => this.loading = false)\n );\n };\n }\n\n /**\n * {@link MessageService.withLoading()} 的快捷方式\n * @param content\n */\n protected withLoading<X>(content?: string) {\n return this.message.withLoading<X>(content);\n }\n\n /**\n * {@link MessageService.withDeleteLoading()} 的快捷方式\n * @param content\n */\n protected withDeleteLoading<X>() {\n return this.message.withDeleteLoading<X>();\n }\n\n /**\n * {@link MessageService.withSaveLoading()} 的快捷方式\n * @param content\n */\n protected withSaveLoading<X>() {\n return this.message.withSaveLoading<X>();\n }\n\n /**\n * 编辑\n * @param entity\n */\n protected edit(entity: U) {\n this.editor.fill(entity);\n this.editor.present();\n }\n}\n\n/**\n * 带分页的增删改查页面\n * @template T Searcher 的模型类型\n * @template U Editor 的模型类型,默认为 T\n * @template V Data 的模型类型,默认为 U\n */\nexport abstract class PagingCrudPage<T, U = T, V = U> extends CrudPage<T, U, V> {\n protected totalSize!: number;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { button,
|
|
2
|
-
import { levels2tree, tree2list } from '@solar-
|
|
3
|
-
import { form } from '@fluent-form/core';
|
|
1
|
+
import { button, textField, numberField, toggle, radioGroup, cascader, datePicker, dateRangePicker } from '@fluent-form/ui-zorro';
|
|
2
|
+
import { levels2tree, tree2list } from '@solar-kit/core';
|
|
3
|
+
import { form, headless } from '@fluent-form/core';
|
|
4
4
|
|
|
5
5
|
function searchButton() {
|
|
6
6
|
return button().icon('search').content('查询').type('primary');
|
|
@@ -23,11 +23,18 @@ function submitButton() {
|
|
|
23
23
|
.disabled(({ control }) => control.invalid);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
function
|
|
27
|
-
return
|
|
26
|
+
function entityToOption(entity) {
|
|
27
|
+
return { label: entity.fullName, value: entity.id, ...entity };
|
|
28
|
+
}
|
|
29
|
+
function entitiesToOptions(entities) {
|
|
30
|
+
return entities.map(entity => entityToOption(entity));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function cellphoneField(key = 'cellphone', length = 11) {
|
|
34
|
+
return textField(key).type('tel').length(length);
|
|
28
35
|
}
|
|
29
|
-
function
|
|
30
|
-
return
|
|
36
|
+
function integerField(key) {
|
|
37
|
+
return numberField(key).precision(0);
|
|
31
38
|
}
|
|
32
39
|
function enabledToggle(key = 'enabled', defaultValue = true) {
|
|
33
40
|
return toggle(key).placeholder(['有效', '无效']).defaultValue(defaultValue);
|
|
@@ -42,47 +49,19 @@ function genderRadioGroup(key = 'gender') {
|
|
|
42
49
|
]);
|
|
43
50
|
}
|
|
44
51
|
function categoryCascader(key, channels, categories) {
|
|
45
|
-
return
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
*
|
|
50
|
-
* 已经配置了 labelProperty: 'fullName', valueProperty: 'id'
|
|
51
|
-
* @param key
|
|
52
|
-
*/
|
|
53
|
-
function entityCheckboxGroup(key) {
|
|
54
|
-
return checkboxGroup(key).config({ labelProperty: 'fullName', valueProperty: 'id' });
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* 通用的实体单选框
|
|
58
|
-
*
|
|
59
|
-
* 已经配置了 labelProperty: 'fullName', valueProperty: 'id'
|
|
60
|
-
* @param key
|
|
61
|
-
*/
|
|
62
|
-
function entityRadioGroup(key) {
|
|
63
|
-
return radioGroup(key).config({ labelProperty: 'fullName', valueProperty: 'id' });
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* 通用的实体选择器
|
|
67
|
-
*
|
|
68
|
-
* 已经配置了 labelProperty: 'fullName', valueProperty: 'id'
|
|
69
|
-
* @param key
|
|
70
|
-
*/
|
|
71
|
-
function entitySelect(key) {
|
|
72
|
-
return select(key).config({ labelProperty: 'fullName', valueProperty: 'id' });
|
|
52
|
+
return leafCascader(key).options(levels2tree([
|
|
53
|
+
entitiesToOptions(channels),
|
|
54
|
+
entitiesToOptions(categories)
|
|
55
|
+
], { id: 'value', pid: 'channel' }));
|
|
73
56
|
}
|
|
74
57
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
* - 多字段模式下不支持以下选项:
|
|
78
|
-
* - 不支持使用函数作为 options
|
|
79
|
-
* - 不支持 fetchOptions 选项
|
|
58
|
+
* 叶子节点级联选择器
|
|
80
59
|
*
|
|
81
60
|
* options 选项可以使用 `list2tree()` 或 `levels2tree()` 来构造
|
|
82
61
|
*
|
|
83
62
|
* @param key
|
|
84
63
|
*/
|
|
85
|
-
function
|
|
64
|
+
function leafCascader(key) {
|
|
86
65
|
let list;
|
|
87
66
|
return cascader(key)
|
|
88
67
|
.trigger('hover')
|
|
@@ -90,29 +69,22 @@ function entityCascader(key) {
|
|
|
90
69
|
parser: (value, schema) => {
|
|
91
70
|
if (!value)
|
|
92
71
|
return null;
|
|
93
|
-
// 如果输入的是数组,则说明当前是多字段模式,不需要做处理
|
|
94
|
-
if (Array.isArray(value))
|
|
95
|
-
return value;
|
|
96
72
|
// 如果输入的是叶子节点,我们需要转为 [父节点, ..., 叶子节点]
|
|
97
73
|
list ??= tree2list(schema.options);
|
|
98
74
|
// 找到选中的叶子节点
|
|
99
|
-
let node = list.find(node => node.
|
|
75
|
+
let node = list.find(node => node.value === value && (!node.children || node.children.length === 0));
|
|
100
76
|
const levels = [];
|
|
101
77
|
while (node) {
|
|
102
|
-
levels.unshift(node.
|
|
78
|
+
levels.unshift(node.value);
|
|
103
79
|
node = node.parent;
|
|
104
80
|
}
|
|
105
81
|
return levels;
|
|
106
82
|
},
|
|
107
83
|
formatter: value => {
|
|
108
|
-
// 多字段模式,不需要处理
|
|
109
|
-
if (Array.isArray(key))
|
|
110
|
-
return value;
|
|
111
84
|
// 输出的是节点数组,我们只要叶子节点
|
|
112
85
|
return value?.[value.length - 1];
|
|
113
86
|
}
|
|
114
|
-
})
|
|
115
|
-
.config({ labelProperty: 'fullName', valueProperty: 'id' });
|
|
87
|
+
});
|
|
116
88
|
}
|
|
117
89
|
function datetimePicker(key, format = 'yyyy-MM-dd HH:mm') {
|
|
118
90
|
return datePicker(key)
|
|
@@ -138,10 +110,6 @@ function entityForm(composeFn) {
|
|
|
138
110
|
});
|
|
139
111
|
}
|
|
140
112
|
|
|
141
|
-
function entityToOption(entity) {
|
|
142
|
-
return { label: entity.fullName, value: entity.id };
|
|
143
|
-
}
|
|
144
|
-
|
|
145
113
|
function parseLabel(label) {
|
|
146
114
|
if (typeof label === 'string') {
|
|
147
115
|
return label;
|
|
@@ -203,5 +171,5 @@ function useImprovedPickerPatchers() {
|
|
|
203
171
|
* Generated bundle index. Do not edit.
|
|
204
172
|
*/
|
|
205
173
|
|
|
206
|
-
export { addButton, categoryCascader,
|
|
174
|
+
export { addButton, categoryCascader, cellphoneField, datetimePicker, datetimeRangePicker, enabledToggle, entitiesToOptions, entityForm, entityToOption, finishedToggle, genderRadioGroup, integerField, leafCascader, saveButton, searchButton, submitButton, useAutoPlaceholderPatchers, useImprovedPickerPatchers };
|
|
207
175
|
//# sourceMappingURL=solar-angular-ui-zorro-fluent-form.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solar-angular-ui-zorro-fluent-form.mjs","sources":["../../../packages/ui-zorro/fluent-form/components.ts","../../../packages/ui-zorro/fluent-form/controls.ts","../../../packages/ui-zorro/fluent-form/form.ts","../../../packages/ui-zorro/fluent-form/helper.ts","../../../packages/ui-zorro/fluent-form/patchers.ts","../../../packages/ui-zorro/fluent-form/solar-angular-ui-zorro-fluent-form.ts"],"sourcesContent":["import { UnstableBuilder } from '@fluent-form/core';\nimport { button, ButtonComponentSchema } from '@fluent-form/ui-zorro';\nimport { KindOrKey } from './typing';\n\nexport function searchButton(): UnstableBuilder<ButtonComponentSchema, KindOrKey | 'icon' | 'content' | 'type'> {\n return button().icon('search').content('查询').type('primary');\n}\n\nexport function addButton(): UnstableBuilder<ButtonComponentSchema, KindOrKey | 'icon' | 'content' | 'type' | 'mode'> {\n return button().icon('plus').content('新增').type('primary').mode('button');\n}\n\nexport function saveButton(): UnstableBuilder<ButtonComponentSchema, KindOrKey | 'content' | 'type' | 'disabled'> {\n return button()\n .content('保存')\n .type('primary')\n .variants({ block: true })\n .disabled(({ control }) => control.invalid) as UnstableBuilder<ButtonComponentSchema, KindOrKey | 'content' | 'type' | 'disabled'>;\n}\n\nexport function submitButton(): UnstableBuilder<ButtonComponentSchema, KindOrKey | 'content' | 'type' | 'disabled'> {\n return button()\n .content('提交')\n .type('primary')\n .variants({ block: true })\n .disabled(({ control }) => control.invalid) as UnstableBuilder<ButtonComponentSchema, KindOrKey | 'content' | 'type' | 'disabled'>;\n}\n","import { SchemaKey, SingleSchemaKey, UnstableBuilder } from '@fluent-form/core';\nimport { CascaderControlSchema, CheckboxGroupControlSchema, DatePickerControlSchema, DateRangePickerControlSchema, NumberControlSchema, RadioGroupControlSchema, SelectControlSchema, TextControlSchema, ToggleControlSchema, cascader, checkboxGroup, datePicker, dateRangePicker, number, radioGroup, select, text, toggle } from '@fluent-form/ui-zorro';\nimport { TreeNode, levels2tree, tree2list } from '@solar-angular/core';\nimport { Category, Channel } from '@solar-kit/planets/earth';\nimport { Gender } from '@solar-kit/planets/sun';\nimport { KindOrKey } from './typing';\n\nexport function cellphoneText(key = 'cellphone', length = 11): UnstableBuilder<TextControlSchema, KindOrKey | 'type' | 'length'> {\n return text(key).type('tel').length(length);\n}\n\nexport function integer(key: SingleSchemaKey): UnstableBuilder<NumberControlSchema, KindOrKey | 'precision'> {\n return number(key).precision(0);\n}\n\nexport function enabledToggle(key: SingleSchemaKey = 'enabled', defaultValue = true): UnstableBuilder<ToggleControlSchema, KindOrKey | 'placeholder' | 'defaultValue'> {\n return toggle(key).placeholder(['有效', '无效']).defaultValue(defaultValue);\n}\n\nexport function finishedToggle(key: SingleSchemaKey = 'finished', defaultValue = false): UnstableBuilder<ToggleControlSchema, KindOrKey | 'placeholder' | 'defaultValue'> {\n return toggle(key).placeholder(['已完成', '未完成']).defaultValue(defaultValue);\n}\n\nexport function genderRadioGroup(key = 'gender'): UnstableBuilder<RadioGroupControlSchema, KindOrKey | 'options'> {\n return radioGroup(key).options([\n { label: '女', value: Gender.Woman },\n { label: '男', value: Gender.Man }\n ]);\n}\n\nexport function categoryCascader(key: SchemaKey, channels: Channel[], categories: Category[]): UnstableBuilder<CascaderControlSchema, KindOrKey | 'options' | 'trigger' | 'config' | 'mapper'> {\n return entityCascader(key).options(levels2tree([channels, categories], 'channel'));\n}\n\n/**\n * 通用的实体多选框\n *\n * 已经配置了 labelProperty: 'fullName', valueProperty: 'id'\n * @param key\n */\nexport function entityCheckboxGroup(key: string): UnstableBuilder<CheckboxGroupControlSchema, KindOrKey | 'config'> {\n return checkboxGroup(key).config({ labelProperty: 'fullName', valueProperty: 'id' });\n}\n\n/**\n * 通用的实体单选框\n *\n * 已经配置了 labelProperty: 'fullName', valueProperty: 'id'\n * @param key\n */\nexport function entityRadioGroup(key: string): UnstableBuilder<RadioGroupControlSchema, KindOrKey | 'config'> {\n return radioGroup(key).config({ labelProperty: 'fullName', valueProperty: 'id' });\n}\n\n/**\n * 通用的实体选择器\n *\n * 已经配置了 labelProperty: 'fullName', valueProperty: 'id'\n * @param key\n */\nexport function entitySelect(key: SingleSchemaKey): UnstableBuilder<SelectControlSchema, KindOrKey | 'config'> {\n return select(key).config({ labelProperty: 'fullName', valueProperty: 'id' });\n}\n\n/**\n * 通用的实体联级选择器\n *\n * - 多字段模式下不支持以下选项:\n * - 不支持使用函数作为 options\n * - 不支持 fetchOptions 选项\n *\n * options 选项可以使用 `list2tree()` 或 `levels2tree()` 来构造\n *\n * @param key\n */\nexport function entityCascader(key: SchemaKey): UnstableBuilder<CascaderControlSchema, KindOrKey | 'trigger' | 'config' | 'mapper'> {\n let list: TreeNode[];\n\n return cascader(key)\n .trigger('hover')\n .mapper({\n parser: (value: TreeNode['id'] | TreeNode['id'][] | null, schema) => {\n if (!value) return null;\n\n // 如果输入的是数组,则说明当前是多字段模式,不需要做处理\n if (Array.isArray(value)) return value;\n\n // 如果输入的是叶子节点,我们需要转为 [父节点, ..., 叶子节点]\n list ??= tree2list((schema as CascaderControlSchema).options as TreeNode[]);\n // 找到选中的叶子节点\n let node = list.find(node => node.id === value && node.isLeaf);\n\n const levels = [];\n\n while (node) {\n levels.unshift(node.id);\n node = node.parent;\n }\n\n return levels;\n },\n formatter: value => {\n // 多字段模式,不需要处理\n if (Array.isArray(key)) return value;\n\n // 输出的是节点数组,我们只要叶子节点\n return value?.[value.length - 1];\n }\n })\n .config({ labelProperty: 'fullName', valueProperty: 'id' });\n}\n\nexport function datetimePicker(key: string, format = 'yyyy-MM-dd HH:mm'): UnstableBuilder<DatePickerControlSchema, KindOrKey | 'time' | 'format'> {\n return datePicker(key)\n .time({ nzFormat: 'HH:mm' })\n .format(format);\n}\n\nexport function datetimeRangePicker(key: SchemaKey, format = 'yyyy-MM-dd HH:mm'): UnstableBuilder<DateRangePickerControlSchema, KindOrKey | 'time' | 'format'> {\n return dateRangePicker(key)\n .time({ nzFormat: 'HH:mm' })\n .format(format);\n}\n","import { form } from '@fluent-form/core';\nimport { headless } from '@fluent-form/ui-zorro';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\n/**\n * 实体表单\n *\n * 内置了一个 Headless ID 控件图示:`headless('id')`\n * @param schemas\n */\nexport function entityForm(composeFn: () => NzSafeAny) {\n return form(() => {\n headless('id');\n composeFn();\n });\n}\n","import { IdEntity } from '@solar-kit/planets/sun';\n\nexport function entityToOption(entity: IdEntity & { fullName: string }) {\n return { label: entity.fullName, value: entity.id };\n}\n","import { SchemaPatcher } from '@fluent-form/core';\nimport { AbstractZorroControlSchema, Label } from '@fluent-form/ui-zorro';\n\nfunction parseLabel(label: string | Label): string {\n if (typeof label === 'string') {\n return label;\n }\n\n return label.content ?? '';\n}\n\nfunction autoPlaceholder(schema: AbstractZorroControlSchema, action: string) {\n const label = schema['label'];\n\n if (label && typeof label !== 'function') {\n (schema as any)['placeholder'] ??= action + parseLabel(label);\n }\n\n return schema;\n}\n\n/**\n * 为文本框字段自动添加 placeholder\n */\nexport function useAutoPlaceholderPatchers(): SchemaPatcher[] {\n return [\n {\n selector: ['text', 'number'],\n patch: schema => autoPlaceholder(schema, '请输入')\n },\n {\n selector: 'textarea',\n patch: schema => autoPlaceholder(schema, '请填写')\n },\n {\n selector: ['date-picker', 'time-picker', 'select', 'cascader', 'tree-select'],\n patch: schema => autoPlaceholder(schema, '请选择')\n }\n ];\n}\n\n/**\n * 1. 自动为非必填字段添加清除按钮\n * 2. 为选择器添加搜索功能\n */\nexport function useImprovedPickerPatchers(): SchemaPatcher[] {\n return [\n {\n selector: ['date-picker', 'date-range-picker', 'time-picker', 'select', 'cascader', 'tree-select'],\n patch: schema => {\n if (!schema['required']) {\n schema['clearable'] ??= true;\n }\n\n return schema;\n }\n },\n {\n selector: ['select', 'cascader', 'tree-select'],\n patch: schema => {\n schema['searchable'] ??= true;\n\n return schema;\n }\n }\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"solar-angular-ui-zorro-fluent-form.mjs","sources":["../../../packages/ui-zorro/fluent-form/components.ts","../../../packages/ui-zorro/fluent-form/helper.ts","../../../packages/ui-zorro/fluent-form/controls.ts","../../../packages/ui-zorro/fluent-form/form.ts","../../../packages/ui-zorro/fluent-form/patchers.ts","../../../packages/ui-zorro/fluent-form/solar-angular-ui-zorro-fluent-form.ts"],"sourcesContent":["import { UnstableBuilder } from '@fluent-form/core';\nimport { button, ButtonComponentSchema } from '@fluent-form/ui-zorro';\nimport { KindOrKey } from './typing';\n\nexport function searchButton(): UnstableBuilder<ButtonComponentSchema, KindOrKey | 'icon' | 'content' | 'type'> {\n return button().icon('search').content('查询').type('primary');\n}\n\nexport function addButton(): UnstableBuilder<ButtonComponentSchema, KindOrKey | 'icon' | 'content' | 'type' | 'mode'> {\n return button().icon('plus').content('新增').type('primary').mode('button');\n}\n\nexport function saveButton(): UnstableBuilder<ButtonComponentSchema, KindOrKey | 'content' | 'type' | 'disabled'> {\n return button()\n .content('保存')\n .type('primary')\n .variants({ block: true })\n .disabled(({ control }) => control.invalid) as UnstableBuilder<ButtonComponentSchema, KindOrKey | 'content' | 'type' | 'disabled'>;\n}\n\nexport function submitButton(): UnstableBuilder<ButtonComponentSchema, KindOrKey | 'content' | 'type' | 'disabled'> {\n return button()\n .content('提交')\n .type('primary')\n .variants({ block: true })\n .disabled(({ control }) => control.invalid) as UnstableBuilder<ButtonComponentSchema, KindOrKey | 'content' | 'type' | 'disabled'>;\n}\n","\nexport function entityToOption<T extends { id: string | number, fullName: string }>(entity: T) {\n return { label: entity.fullName, value: entity.id, ...entity };\n}\n\nexport function entitiesToOptions<T extends { id: string | number, fullName: string }>(entities: T[]) {\n return entities.map(entity => entityToOption(entity));\n}\n","import { SchemaKey, SingleSchemaKey, UnstableBuilder } from '@fluent-form/core';\nimport { CascaderControlSchema, DatePickerControlSchema, DateRangePickerControlSchema, NumberFieldControlSchema, RadioGroupControlSchema, TextFieldControlSchema, ToggleControlSchema, cascader, datePicker, dateRangePicker, numberField, radioGroup, textField, toggle } from '@fluent-form/ui-zorro';\nimport { TreeNode, levels2tree, tree2list } from '@solar-kit/core';\nimport { Category, Channel } from '@solar-kit/planets/earth';\nimport { Gender } from '@solar-kit/planets/sun';\nimport { NzCascaderOption } from 'ng-zorro-antd/cascader';\nimport { entitiesToOptions } from './helper';\nimport { KindOrKey } from './typing';\n\nexport function cellphoneField(key = 'cellphone', length = 11): UnstableBuilder<TextFieldControlSchema, KindOrKey | 'type' | 'length'> {\n return textField(key).type('tel').length(length);\n}\n\nexport function integerField(key: SingleSchemaKey): UnstableBuilder<NumberFieldControlSchema, KindOrKey | 'precision'> {\n return numberField(key).precision(0);\n}\n\nexport function enabledToggle(key: SingleSchemaKey = 'enabled', defaultValue = true): UnstableBuilder<ToggleControlSchema, KindOrKey | 'placeholder' | 'defaultValue'> {\n return toggle(key).placeholder(['有效', '无效']).defaultValue(defaultValue);\n}\n\nexport function finishedToggle(key: SingleSchemaKey = 'finished', defaultValue = false): UnstableBuilder<ToggleControlSchema, KindOrKey | 'placeholder' | 'defaultValue'> {\n return toggle(key).placeholder(['已完成', '未完成']).defaultValue(defaultValue);\n}\n\nexport function genderRadioGroup(key = 'gender'): UnstableBuilder<RadioGroupControlSchema, KindOrKey | 'options'> {\n return radioGroup(key).options([\n { label: '女', value: Gender.Woman },\n { label: '男', value: Gender.Man }\n ]);\n}\n\nexport function categoryCascader(key: SingleSchemaKey, channels: Channel[], categories: Category[]): UnstableBuilder<CascaderControlSchema<SingleSchemaKey>, KindOrKey | 'options' | 'trigger' | 'mapper'> {\n return leafCascader(key).options(\n levels2tree(\n [\n entitiesToOptions(channels as { id: number, fullName: string, channel?: number }[]),\n entitiesToOptions(categories)\n ],\n { id: 'value', pid: 'channel' }\n )\n );\n}\n\n/**\n * 叶子节点级联选择器\n *\n * options 选项可以使用 `list2tree()` 或 `levels2tree()` 来构造\n *\n * @param key\n */\nexport function leafCascader(key: SingleSchemaKey): UnstableBuilder<CascaderControlSchema<SingleSchemaKey>, KindOrKey | 'trigger' | 'mapper'> {\n let list: NzCascaderOption[];\n\n return cascader(key)\n .trigger('hover')\n .mapper({\n parser: (value: NzCascaderOption['value'] | null, schema) => {\n if (!value) return null;\n\n // 如果输入的是叶子节点,我们需要转为 [父节点, ..., 叶子节点]\n list ??= tree2list((schema as CascaderControlSchema).options as TreeNode<NzCascaderOption>[]);\n // 找到选中的叶子节点\n let node = list.find(node => node.value === value && (!node.children || node.children.length === 0));\n\n const levels = [];\n\n while (node) {\n levels.unshift(node.value);\n node = node.parent;\n }\n\n return levels;\n },\n formatter: value => {\n // 输出的是节点数组,我们只要叶子节点\n return value?.[value.length - 1];\n }\n })\n}\n\nexport function datetimePicker(key: string, format = 'yyyy-MM-dd HH:mm'): UnstableBuilder<DatePickerControlSchema, KindOrKey | 'time' | 'format'> {\n return datePicker(key)\n .time({ nzFormat: 'HH:mm' })\n .format(format);\n}\n\nexport function datetimeRangePicker(key: SchemaKey, format = 'yyyy-MM-dd HH:mm'): UnstableBuilder<DateRangePickerControlSchema, KindOrKey | 'time' | 'format'> {\n return dateRangePicker(key)\n .time({ nzFormat: 'HH:mm' })\n .format(format);\n}\n","import { form, headless } from '@fluent-form/core';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\n/**\n * 实体表单\n *\n * 内置了一个 Headless ID 控件图示:`headless('id')`\n * @param schemas\n */\nexport function entityForm(composeFn: () => NzSafeAny) {\n return form(() => {\n headless('id');\n composeFn();\n });\n}\n","import { SchemaPatcher } from '@fluent-form/core';\nimport { AbstractZorroControlSchema, Label } from '@fluent-form/ui-zorro';\n\nfunction parseLabel(label: string | Label): string {\n if (typeof label === 'string') {\n return label;\n }\n\n return label.content ?? '';\n}\n\nfunction autoPlaceholder(schema: AbstractZorroControlSchema, action: string) {\n const label = schema['label'];\n\n if (label && typeof label !== 'function') {\n (schema as any)['placeholder'] ??= action + parseLabel(label);\n }\n\n return schema;\n}\n\n/**\n * 为文本框字段自动添加 placeholder\n */\nexport function useAutoPlaceholderPatchers(): SchemaPatcher[] {\n return [\n {\n selector: ['text', 'number'],\n patch: schema => autoPlaceholder(schema, '请输入')\n },\n {\n selector: 'textarea',\n patch: schema => autoPlaceholder(schema, '请填写')\n },\n {\n selector: ['date-picker', 'time-picker', 'select', 'cascader', 'tree-select'],\n patch: schema => autoPlaceholder(schema, '请选择')\n }\n ];\n}\n\n/**\n * 1. 自动为非必填字段添加清除按钮\n * 2. 为选择器添加搜索功能\n */\nexport function useImprovedPickerPatchers(): SchemaPatcher[] {\n return [\n {\n selector: ['date-picker', 'date-range-picker', 'time-picker', 'select', 'cascader', 'tree-select'],\n patch: schema => {\n if (!schema['required']) {\n schema['clearable'] ??= true;\n }\n\n return schema;\n }\n },\n {\n selector: ['select', 'cascader', 'tree-select'],\n patch: schema => {\n schema['searchable'] ??= true;\n\n return schema;\n }\n }\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,45 +1,20 @@
|
|
|
1
1
|
import { SchemaKey, SingleSchemaKey, UnstableBuilder } from '@fluent-form/core';
|
|
2
|
-
import { CascaderControlSchema,
|
|
2
|
+
import { CascaderControlSchema, DatePickerControlSchema, DateRangePickerControlSchema, NumberFieldControlSchema, RadioGroupControlSchema, TextFieldControlSchema, ToggleControlSchema } from '@fluent-form/ui-zorro';
|
|
3
3
|
import { Category, Channel } from '@solar-kit/planets/earth';
|
|
4
4
|
import { KindOrKey } from './typing';
|
|
5
|
-
export declare function
|
|
6
|
-
export declare function
|
|
5
|
+
export declare function cellphoneField(key?: string, length?: number): UnstableBuilder<TextFieldControlSchema, KindOrKey | 'type' | 'length'>;
|
|
6
|
+
export declare function integerField(key: SingleSchemaKey): UnstableBuilder<NumberFieldControlSchema, KindOrKey | 'precision'>;
|
|
7
7
|
export declare function enabledToggle(key?: SingleSchemaKey, defaultValue?: boolean): UnstableBuilder<ToggleControlSchema, KindOrKey | 'placeholder' | 'defaultValue'>;
|
|
8
8
|
export declare function finishedToggle(key?: SingleSchemaKey, defaultValue?: boolean): UnstableBuilder<ToggleControlSchema, KindOrKey | 'placeholder' | 'defaultValue'>;
|
|
9
9
|
export declare function genderRadioGroup(key?: string): UnstableBuilder<RadioGroupControlSchema, KindOrKey | 'options'>;
|
|
10
|
-
export declare function categoryCascader(key:
|
|
10
|
+
export declare function categoryCascader(key: SingleSchemaKey, channels: Channel[], categories: Category[]): UnstableBuilder<CascaderControlSchema<SingleSchemaKey>, KindOrKey | 'options' | 'trigger' | 'mapper'>;
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* 已经配置了 labelProperty: 'fullName', valueProperty: 'id'
|
|
15
|
-
* @param key
|
|
16
|
-
*/
|
|
17
|
-
export declare function entityCheckboxGroup(key: string): UnstableBuilder<CheckboxGroupControlSchema, KindOrKey | 'config'>;
|
|
18
|
-
/**
|
|
19
|
-
* 通用的实体单选框
|
|
20
|
-
*
|
|
21
|
-
* 已经配置了 labelProperty: 'fullName', valueProperty: 'id'
|
|
22
|
-
* @param key
|
|
23
|
-
*/
|
|
24
|
-
export declare function entityRadioGroup(key: string): UnstableBuilder<RadioGroupControlSchema, KindOrKey | 'config'>;
|
|
25
|
-
/**
|
|
26
|
-
* 通用的实体选择器
|
|
27
|
-
*
|
|
28
|
-
* 已经配置了 labelProperty: 'fullName', valueProperty: 'id'
|
|
29
|
-
* @param key
|
|
30
|
-
*/
|
|
31
|
-
export declare function entitySelect(key: SingleSchemaKey): UnstableBuilder<SelectControlSchema, KindOrKey | 'config'>;
|
|
32
|
-
/**
|
|
33
|
-
* 通用的实体联级选择器
|
|
34
|
-
*
|
|
35
|
-
* - 多字段模式下不支持以下选项:
|
|
36
|
-
* - 不支持使用函数作为 options
|
|
37
|
-
* - 不支持 fetchOptions 选项
|
|
12
|
+
* 叶子节点级联选择器
|
|
38
13
|
*
|
|
39
14
|
* options 选项可以使用 `list2tree()` 或 `levels2tree()` 来构造
|
|
40
15
|
*
|
|
41
16
|
* @param key
|
|
42
17
|
*/
|
|
43
|
-
export declare function
|
|
18
|
+
export declare function leafCascader(key: SingleSchemaKey): UnstableBuilder<CascaderControlSchema<SingleSchemaKey>, KindOrKey | 'trigger' | 'mapper'>;
|
|
44
19
|
export declare function datetimePicker(key: string, format?: string): UnstableBuilder<DatePickerControlSchema, KindOrKey | 'time' | 'format'>;
|
|
45
20
|
export declare function datetimeRangePicker(key: SchemaKey, format?: string): UnstableBuilder<DateRangePickerControlSchema, KindOrKey | 'time' | 'format'>;
|
package/fluent-form/form.d.ts
CHANGED
|
@@ -5,4 +5,4 @@ import { NzSafeAny } from 'ng-zorro-antd/core/types';
|
|
|
5
5
|
* 内置了一个 Headless ID 控件图示:`headless('id')`
|
|
6
6
|
* @param schemas
|
|
7
7
|
*/
|
|
8
|
-
export declare function entityForm(composeFn: () => NzSafeAny): import("@
|
|
8
|
+
export declare function entityForm(composeFn: () => NzSafeAny): import("@angular/core").Signal<import("@fluent-form/core").AbstractFormGroupSchema>;
|
package/fluent-form/helper.d.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export declare function entityToOption<T extends {
|
|
2
|
+
id: string | number;
|
|
3
3
|
fullName: string;
|
|
4
|
-
}): {
|
|
4
|
+
}>(entity: T): {
|
|
5
5
|
label: string;
|
|
6
|
-
value: number;
|
|
7
|
-
};
|
|
6
|
+
value: string | number;
|
|
7
|
+
} & T;
|
|
8
|
+
export declare function entitiesToOptions<T extends {
|
|
9
|
+
id: string | number;
|
|
10
|
+
fullName: string;
|
|
11
|
+
}>(entities: T[]): ({
|
|
12
|
+
label: string;
|
|
13
|
+
value: string | number;
|
|
14
|
+
} & T)[];
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solar-angular/ui-zorro",
|
|
3
|
-
"version": "18.
|
|
3
|
+
"version": "18.3.0",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@solar-angular/core": "18.
|
|
10
|
-
"@solar-angular/planets": "18.
|
|
11
|
-
"@solar-angular/platform-browser": "18.
|
|
9
|
+
"@solar-angular/core": "18.3.0",
|
|
10
|
+
"@solar-angular/planets": "18.3.0",
|
|
11
|
+
"@solar-angular/platform-browser": "18.3.0",
|
|
12
12
|
"tslib": "^2.3.0"
|
|
13
13
|
},
|
|
14
14
|
"peerDependencies": {
|
|
@@ -17,8 +17,9 @@
|
|
|
17
17
|
"@angular/core": "^18.0.0",
|
|
18
18
|
"@angular/forms": "^18.0.0",
|
|
19
19
|
"@angular/service-worker": "^18.0.0",
|
|
20
|
-
"@
|
|
21
|
-
"@fluent-form/
|
|
20
|
+
"@solar-kit/core": "^1.0.6",
|
|
21
|
+
"@fluent-form/core": ">=0.28.0",
|
|
22
|
+
"@fluent-form/ui-zorro": ">=0.28.0",
|
|
22
23
|
"ng-zorro-antd": "^18.0.0"
|
|
23
24
|
},
|
|
24
25
|
"module": "fesm2022/solar-angular-ui-zorro.mjs",
|
|
@@ -51,18 +52,18 @@
|
|
|
51
52
|
"esm": "./esm2022/fluent-form/solar-angular-ui-zorro-fluent-form.mjs",
|
|
52
53
|
"default": "./fesm2022/solar-angular-ui-zorro-fluent-form.mjs"
|
|
53
54
|
},
|
|
54
|
-
"./message": {
|
|
55
|
-
"types": "./message/index.d.ts",
|
|
56
|
-
"esm2022": "./esm2022/message/solar-angular-ui-zorro-message.mjs",
|
|
57
|
-
"esm": "./esm2022/message/solar-angular-ui-zorro-message.mjs",
|
|
58
|
-
"default": "./fesm2022/solar-angular-ui-zorro-message.mjs"
|
|
59
|
-
},
|
|
60
55
|
"./media-uploader": {
|
|
61
56
|
"types": "./media-uploader/index.d.ts",
|
|
62
57
|
"esm2022": "./esm2022/media-uploader/solar-angular-ui-zorro-media-uploader.mjs",
|
|
63
58
|
"esm": "./esm2022/media-uploader/solar-angular-ui-zorro-media-uploader.mjs",
|
|
64
59
|
"default": "./fesm2022/solar-angular-ui-zorro-media-uploader.mjs"
|
|
65
60
|
},
|
|
61
|
+
"./message": {
|
|
62
|
+
"types": "./message/index.d.ts",
|
|
63
|
+
"esm2022": "./esm2022/message/solar-angular-ui-zorro-message.mjs",
|
|
64
|
+
"esm": "./esm2022/message/solar-angular-ui-zorro-message.mjs",
|
|
65
|
+
"default": "./fesm2022/solar-angular-ui-zorro-message.mjs"
|
|
66
|
+
},
|
|
66
67
|
"./page-forbidden": {
|
|
67
68
|
"types": "./page-forbidden/index.d.ts",
|
|
68
69
|
"esm2022": "./esm2022/page-forbidden/solar-angular-ui-zorro-page-forbidden.mjs",
|