@ticatec/uniface-flexi-module 0.0.2
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/FLEXICRITERIASET_GUIDE.md +1559 -0
- package/FLEXICRITERIASET_GUIDE_CN.md +1133 -0
- package/FLEXIDATATABLE_GUIDE.md +1650 -0
- package/FLEXIDATATABLE_GUIDE_CN.md +1650 -0
- package/FLEXIFORM_GUIDE.md +1068 -0
- package/FLEXIFORM_GUIDE_CN.md +1068 -0
- package/FLEXI_CONTEXT_GUIDE_CN.md +172 -0
- package/MODULE_LOADER_CN.md +228 -0
- package/README.md +307 -0
- package/README_CN.md +51 -0
- package/SANDBOX_CN.md +201 -0
- package/dist/FlexiContext.d.ts +28 -0
- package/dist/FlexiContext.js +45 -0
- package/dist/ModuleLoader.d.ts +41 -0
- package/dist/ModuleLoader.js +55 -0
- package/dist/Sandbox.d.ts +33 -0
- package/dist/Sandbox.js +101 -0
- package/dist/criteria-panel/CriteriaFieldsPanel.svelte +26 -0
- package/dist/criteria-panel/CriteriaFieldsPanel.svelte.d.ts +22 -0
- package/dist/criteria-panel/components/CascadeSelectSearchField.svelte +10 -0
- package/dist/criteria-panel/components/CascadeSelectSearchField.svelte.d.ts +25 -0
- package/dist/criteria-panel/components/DateRangeField.svelte +11 -0
- package/dist/criteria-panel/components/DateRangeField.svelte.d.ts +25 -0
- package/dist/criteria-panel/components/DateSearchField.svelte +10 -0
- package/dist/criteria-panel/components/DateSearchField.svelte.d.ts +24 -0
- package/dist/criteria-panel/components/DateTimeSearchField.svelte +10 -0
- package/dist/criteria-panel/components/DateTimeSearchField.svelte.d.ts +24 -0
- package/dist/criteria-panel/components/InputOptionSelectSearchField.svelte +9 -0
- package/dist/criteria-panel/components/InputOptionSelectSearchField.svelte.d.ts +24 -0
- package/dist/criteria-panel/components/NumberRangeField.svelte +11 -0
- package/dist/criteria-panel/components/NumberRangeField.svelte.d.ts +25 -0
- package/dist/criteria-panel/components/NumberSearchField.svelte +9 -0
- package/dist/criteria-panel/components/NumberSearchField.svelte.d.ts +24 -0
- package/dist/criteria-panel/components/OptionMultiSelectSearchField.svelte +9 -0
- package/dist/criteria-panel/components/OptionMultiSelectSearchField.svelte.d.ts +24 -0
- package/dist/criteria-panel/components/OptionSelectSearchField.svelte +9 -0
- package/dist/criteria-panel/components/OptionSelectSearchField.svelte.d.ts +24 -0
- package/dist/criteria-panel/components/SearchField.svelte +14 -0
- package/dist/criteria-panel/components/SearchField.svelte.d.ts +33 -0
- package/dist/criteria-panel/components/TextSearchField.svelte +9 -0
- package/dist/criteria-panel/components/TextSearchField.svelte.d.ts +24 -0
- package/dist/criteria-panel/components/UnknownCriteriaField.svelte +9 -0
- package/dist/criteria-panel/components/UnknownCriteriaField.svelte.d.ts +24 -0
- package/dist/criteria-panel/index.d.ts +6 -0
- package/dist/criteria-panel/index.js +6 -0
- package/dist/criteria-panel/lib/CriteriaComponentBuilder.d.ts +19 -0
- package/dist/criteria-panel/lib/CriteriaComponentBuilder.js +31 -0
- package/dist/criteria-panel/lib/CriteriaFieldBuilder.d.ts +1 -0
- package/dist/criteria-panel/lib/CriteriaFieldBuilder.js +127 -0
- package/dist/criteria-panel/lib/FlexiCriteriaField.d.ts +38 -0
- package/dist/criteria-panel/lib/FlexiCriteriaField.js +31 -0
- package/dist/criteria-panel/lib/FlexiCriteriaSet.d.ts +24 -0
- package/dist/criteria-panel/lib/FlexiCriteriaSet.js +48 -0
- package/dist/flexi-datatable/FlexiDataTable.d.ts +111 -0
- package/dist/flexi-datatable/FlexiDataTable.js +90 -0
- package/dist/flexi-datatable/index.d.ts +2 -0
- package/dist/flexi-datatable/index.js +2 -0
- package/dist/flexi-form/FlexiCompound.d.ts +34 -0
- package/dist/flexi-form/FlexiCompound.js +84 -0
- package/dist/flexi-form/FlexiFormDialog.svelte +24 -0
- package/dist/flexi-form/FlexiFormDialog.svelte.d.ts +21 -0
- package/dist/flexi-form/FlexiFormPage.svelte +26 -0
- package/dist/flexi-form/FlexiFormPage.svelte.d.ts +25 -0
- package/dist/flexi-form/Schema.d.ts +6 -0
- package/dist/flexi-form/Schema.js +1 -0
- package/dist/flexi-form/components/BreakLine.svelte +1 -0
- package/dist/flexi-form/components/BreakLine.svelte.d.ts +26 -0
- package/dist/flexi-form/components/CardTitleBar.svelte +18 -0
- package/dist/flexi-form/components/CardTitleBar.svelte.d.ts +22 -0
- package/dist/flexi-form/components/CascadeOptionSelectField.svelte +13 -0
- package/dist/flexi-form/components/CascadeOptionSelectField.svelte.d.ts +24 -0
- package/dist/flexi-form/components/CellFieldBuilder.d.ts +1 -0
- package/dist/flexi-form/components/CellFieldBuilder.js +178 -0
- package/dist/flexi-form/components/DateField.svelte +12 -0
- package/dist/flexi-form/components/DateField.svelte.d.ts +24 -0
- package/dist/flexi-form/components/DateTimeField.svelte +13 -0
- package/dist/flexi-form/components/DateTimeField.svelte.d.ts +24 -0
- package/dist/flexi-form/components/InputOptionSelectField.svelte +13 -0
- package/dist/flexi-form/components/InputOptionSelectField.svelte.d.ts +24 -0
- package/dist/flexi-form/components/MemoField.svelte +12 -0
- package/dist/flexi-form/components/MemoField.svelte.d.ts +24 -0
- package/dist/flexi-form/components/NumberField.svelte +12 -0
- package/dist/flexi-form/components/NumberField.svelte.d.ts +24 -0
- package/dist/flexi-form/components/OptionsMultiSelectField.svelte +13 -0
- package/dist/flexi-form/components/OptionsMultiSelectField.svelte.d.ts +24 -0
- package/dist/flexi-form/components/OptionsSelectField.svelte +13 -0
- package/dist/flexi-form/components/OptionsSelectField.svelte.d.ts +24 -0
- package/dist/flexi-form/components/TextField.svelte +12 -0
- package/dist/flexi-form/components/TextField.svelte.d.ts +24 -0
- package/dist/flexi-form/components/UnitNumberField.svelte +12 -0
- package/dist/flexi-form/components/UnitNumberField.svelte.d.ts +24 -0
- package/dist/flexi-form/components/UnknownTypeField.svelte +5 -0
- package/dist/flexi-form/components/UnknownTypeField.svelte.d.ts +18 -0
- package/dist/flexi-form/containers/FlexiPanel.svelte +13 -0
- package/dist/flexi-form/containers/FlexiPanel.svelte.d.ts +33 -0
- package/dist/flexi-form/flexi_card/FlexiCard.d.ts +64 -0
- package/dist/flexi-form/flexi_card/FlexiCard.js +66 -0
- package/dist/flexi-form/flexi_card/FlexiCardPanel.svelte +57 -0
- package/dist/flexi-form/flexi_card/FlexiCardPanel.svelte.d.ts +22 -0
- package/dist/flexi-form/flexi_composite/FlexiComposite.d.ts +50 -0
- package/dist/flexi-form/flexi_composite/FlexiComposite.js +26 -0
- package/dist/flexi-form/flexi_composite/FlexiCompositePanel.svelte +42 -0
- package/dist/flexi-form/flexi_composite/FlexiCompositePanel.svelte.d.ts +25 -0
- package/dist/flexi-form/flexi_composite/README.md +50 -0
- package/dist/flexi-form/flexi_datasheet/FlexiDataSheet.d.ts +4 -0
- package/dist/flexi-form/flexi_datasheet/FlexiDataSheet.js +2 -0
- package/dist/flexi-form/flexi_field/FlexiField.d.ts +76 -0
- package/dist/flexi-form/flexi_field/FlexiField.js +128 -0
- package/dist/flexi-form/flexi_field/FlexiFieldCell.svelte +35 -0
- package/dist/flexi-form/flexi_field/FlexiFieldCell.svelte.d.ts +25 -0
- package/dist/flexi-form/flexi_field/UnknownField.d.ts +3 -0
- package/dist/flexi-form/flexi_field/UnknownField.js +3 -0
- package/dist/flexi-form/flexi_form/FlexiForm.d.ts +127 -0
- package/dist/flexi-form/flexi_form/FlexiForm.js +160 -0
- package/dist/flexi-form/flexi_form/FlexiFormPanel.svelte +57 -0
- package/dist/flexi-form/flexi_form/FlexiFormPanel.svelte.d.ts +25 -0
- package/dist/flexi-form/index.d.ts +11 -0
- package/dist/flexi-form/index.js +11 -0
- package/dist/flexi-form/lib/ComponentBuilder.d.ts +15 -0
- package/dist/flexi-form/lib/ComponentBuilder.js +31 -0
- package/dist/flexi-form/lib/index.d.ts +5 -0
- package/dist/flexi-form/lib/index.js +2 -0
- package/dist/flexi-form/lib/types.d.ts +7 -0
- package/dist/flexi-form/lib/types.js +6 -0
- package/dist/flexi-form/lib/utils.d.ts +10 -0
- package/dist/flexi-form/lib/utils.js +48 -0
- package/dist/i18n-res/i18nRes.d.ts +2 -0
- package/dist/i18n-res/i18nRes.js +8 -0
- package/dist/i18n-res/index.d.ts +2 -0
- package/dist/i18n-res/index.js +2 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/uniface-flexi-module.css +46 -0
- package/dist/utils.d.ts +4 -0
- package/dist/utils.js +8 -0
- package/package.json +135 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import FlexiCriteriaField, { type FlexiCriteriaFieldSchema } from "./FlexiCriteriaField";
|
|
2
|
+
import type { Arrangement } from "../../flexi-form/lib";
|
|
3
|
+
export type InvalidateHandler = () => void;
|
|
4
|
+
export interface FlexiCriteriaSetSchema {
|
|
5
|
+
variant?: "outlined" | 'filled';
|
|
6
|
+
arrangement?: Arrangement;
|
|
7
|
+
label$style?: string;
|
|
8
|
+
fields: Array<FlexiCriteriaFieldSchema>;
|
|
9
|
+
}
|
|
10
|
+
export default class FlexiCriteriaSet {
|
|
11
|
+
#private;
|
|
12
|
+
protected field: {
|
|
13
|
+
[key: string]: FlexiCriteriaField;
|
|
14
|
+
};
|
|
15
|
+
readonly arrangement: Arrangement;
|
|
16
|
+
readonly label$style?: string;
|
|
17
|
+
readonly variant?: "outlined" | 'filled';
|
|
18
|
+
constructor(schema: FlexiCriteriaSetSchema);
|
|
19
|
+
initialize(): Promise<void>;
|
|
20
|
+
setInvalidateHandler(value: InvalidateHandler | null): void;
|
|
21
|
+
invalidate(): void;
|
|
22
|
+
get fields(): Array<FlexiCriteriaField>;
|
|
23
|
+
getDictionary(key: string): any;
|
|
24
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import FlexiCriteriaField, {} from "./FlexiCriteriaField";
|
|
2
|
+
import FlexiContext from "../..";
|
|
3
|
+
export default class FlexiCriteriaSet {
|
|
4
|
+
#fields = [];
|
|
5
|
+
field = {};
|
|
6
|
+
#onInvalidate = null;
|
|
7
|
+
#dictionaries;
|
|
8
|
+
arrangement;
|
|
9
|
+
label$style;
|
|
10
|
+
variant;
|
|
11
|
+
#schema;
|
|
12
|
+
constructor(schema) {
|
|
13
|
+
this.#fields = [];
|
|
14
|
+
this.#dictionaries = {};
|
|
15
|
+
this.#schema = schema;
|
|
16
|
+
this.arrangement = schema.arrangement ?? 'vertical';
|
|
17
|
+
this.label$style = schema.label$style;
|
|
18
|
+
this.variant = schema.variant ?? 'outlined';
|
|
19
|
+
}
|
|
20
|
+
async initialize() {
|
|
21
|
+
const dicts = [];
|
|
22
|
+
for (const schema of this.#schema.fields) {
|
|
23
|
+
if (schema.dictName && !dicts.includes(schema.dictName)) {
|
|
24
|
+
dicts.push(schema.dictName);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
this.#dictionaries = FlexiContext.getInstance().loadDictionaries(dicts);
|
|
28
|
+
for (const schema of this.#schema.fields) {
|
|
29
|
+
const field = new FlexiCriteriaField(this, schema);
|
|
30
|
+
this.#fields.push(field);
|
|
31
|
+
if (schema.name) {
|
|
32
|
+
this.field[schema.name] = field;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
setInvalidateHandler(value) {
|
|
37
|
+
this.#onInvalidate = value;
|
|
38
|
+
}
|
|
39
|
+
invalidate() {
|
|
40
|
+
this.#onInvalidate?.();
|
|
41
|
+
}
|
|
42
|
+
get fields() {
|
|
43
|
+
return this.#fields;
|
|
44
|
+
}
|
|
45
|
+
getDictionary(key) {
|
|
46
|
+
return this.#dictionaries[key] ?? [];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { ActionsColumn, DataColumn, IndicatorColumn } from "@ticatec/uniface-element/DataTable";
|
|
2
|
+
export interface FlexiDataTableColumnSchema {
|
|
3
|
+
/**
|
|
4
|
+
* 列头文字
|
|
5
|
+
*/
|
|
6
|
+
text: string;
|
|
7
|
+
/**
|
|
8
|
+
* 对应的字段/属性名
|
|
9
|
+
*/
|
|
10
|
+
field?: string;
|
|
11
|
+
/**
|
|
12
|
+
* 是否冻结在数据表中,如果前面的frozen是false,那么就无效
|
|
13
|
+
*/
|
|
14
|
+
frozen?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* 对齐方式
|
|
17
|
+
*/
|
|
18
|
+
align?: 'left' | 'center' | 'right';
|
|
19
|
+
/**
|
|
20
|
+
* 单元格的宽度
|
|
21
|
+
*/
|
|
22
|
+
width: number;
|
|
23
|
+
/**
|
|
24
|
+
* 最小宽度(如何可以更改大小的时候)
|
|
25
|
+
*/
|
|
26
|
+
minWidth?: number;
|
|
27
|
+
/**
|
|
28
|
+
* 是否可以换行,默认为false
|
|
29
|
+
*/
|
|
30
|
+
warp?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* 单元格转换函数
|
|
33
|
+
*/
|
|
34
|
+
formatter?: string;
|
|
35
|
+
/**
|
|
36
|
+
* 是否忽略html的转义符
|
|
37
|
+
*/
|
|
38
|
+
escapeHTML?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* 超链接设置
|
|
41
|
+
*/
|
|
42
|
+
href?: string;
|
|
43
|
+
/**
|
|
44
|
+
* 是否生产hint
|
|
45
|
+
*/
|
|
46
|
+
hint?: string;
|
|
47
|
+
/**
|
|
48
|
+
* 渲染器
|
|
49
|
+
*/
|
|
50
|
+
render?: string;
|
|
51
|
+
/**
|
|
52
|
+
*
|
|
53
|
+
*/
|
|
54
|
+
visible?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
*
|
|
57
|
+
*/
|
|
58
|
+
resizable?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
*
|
|
61
|
+
*/
|
|
62
|
+
compareFunction?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface IndicatorColumnSchema {
|
|
65
|
+
width: number;
|
|
66
|
+
displayNo?: boolean;
|
|
67
|
+
selectable?: boolean;
|
|
68
|
+
}
|
|
69
|
+
export interface ActionsColumnSchema {
|
|
70
|
+
/** 宽度 */
|
|
71
|
+
width: number;
|
|
72
|
+
/** 对齐方式 */
|
|
73
|
+
align?: "left" | "center";
|
|
74
|
+
/** 行数据的操作动作函数的名称 */
|
|
75
|
+
getActions: string;
|
|
76
|
+
}
|
|
77
|
+
export interface FlexiDataTableSchema {
|
|
78
|
+
round?: boolean;
|
|
79
|
+
indicatorColumn: IndicatorColumnSchema;
|
|
80
|
+
actionsColumn?: ActionsColumnSchema;
|
|
81
|
+
columns: Array<FlexiDataTableColumnSchema>;
|
|
82
|
+
}
|
|
83
|
+
export default class FlexiDataTable {
|
|
84
|
+
#private;
|
|
85
|
+
readonly round?: boolean;
|
|
86
|
+
readonly indicatorColumn: IndicatorColumn;
|
|
87
|
+
constructor(schema: FlexiDataTableSchema);
|
|
88
|
+
initialize(): Promise<void>;
|
|
89
|
+
get actionsColumn(): ActionsColumn | undefined;
|
|
90
|
+
get columns(): Array<DataColumn>;
|
|
91
|
+
/**
|
|
92
|
+
* 获取数据字典值
|
|
93
|
+
* @param dict
|
|
94
|
+
* @param key
|
|
95
|
+
* @param keyCode
|
|
96
|
+
* @param keyText
|
|
97
|
+
* @param missingValue
|
|
98
|
+
* @protected
|
|
99
|
+
*/
|
|
100
|
+
protected getDictionaryText(dict: Array<any>, key: string, keyCode?: string, keyText?: string, missingValue?: string): any;
|
|
101
|
+
/**
|
|
102
|
+
* 比较两个字符串的大小
|
|
103
|
+
* @param {string} a - 第一个字符串
|
|
104
|
+
* @param {string} b - 第二个字符串
|
|
105
|
+
* @param {object} [options]
|
|
106
|
+
* @param {boolean} [options.ignoreCase=false] - 是否忽略大小写
|
|
107
|
+
* @param {string} [options.locale='en'] - 语言环境(如 'en', 'zh', 'fr' 等)
|
|
108
|
+
* @returns {number} -1(a<b),0(相等),1(a>b)
|
|
109
|
+
*/
|
|
110
|
+
protected compareStrings(a: string, b: string, options?: any): number;
|
|
111
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import utils from "../flexi-form/lib/utils";
|
|
2
|
+
export default class FlexiDataTable {
|
|
3
|
+
#columns = [];
|
|
4
|
+
round;
|
|
5
|
+
indicatorColumn;
|
|
6
|
+
#actionsColumn;
|
|
7
|
+
#schema;
|
|
8
|
+
constructor(schema) {
|
|
9
|
+
this.#schema = schema;
|
|
10
|
+
this.round = schema.round;
|
|
11
|
+
this.indicatorColumn = { displayNo: true, ...schema.indicatorColumn };
|
|
12
|
+
}
|
|
13
|
+
async initialize() {
|
|
14
|
+
if (this.#schema.actionsColumn) {
|
|
15
|
+
const getActions = this[this.#schema.actionsColumn.getActions];
|
|
16
|
+
if (getActions) {
|
|
17
|
+
this.#actionsColumn = {
|
|
18
|
+
width: this.#schema.actionsColumn.width,
|
|
19
|
+
align: this.#schema.actionsColumn.align,
|
|
20
|
+
getActions: getActions.bind(this)
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
this.#columns = [];
|
|
25
|
+
for (const schema of this.#schema.columns) {
|
|
26
|
+
const formatter = schema.formatter ? this[schema.formatter] : null;
|
|
27
|
+
const href = schema.href ? this[schema.href] : null;
|
|
28
|
+
const hint = schema.hint ? this[schema.hint] : null;
|
|
29
|
+
const render = schema.render ? this[schema.render] : null;
|
|
30
|
+
const compareFunction = schema.compareFunction ? this[schema.compareFunction] : null;
|
|
31
|
+
console.log(formatter, href, hint, render, compareFunction);
|
|
32
|
+
const column = {
|
|
33
|
+
text: schema.text,
|
|
34
|
+
field: schema.field,
|
|
35
|
+
frozen: schema.frozen,
|
|
36
|
+
align: schema.align,
|
|
37
|
+
width: schema.width,
|
|
38
|
+
minWidth: schema.minWidth,
|
|
39
|
+
warp: schema.warp,
|
|
40
|
+
formatter: formatter ? formatter.bind(this) : undefined,
|
|
41
|
+
escapeHTML: schema.escapeHTML,
|
|
42
|
+
href: href ? href.bind(this) : undefined,
|
|
43
|
+
hint: hint ? hint.bind(this) : undefined,
|
|
44
|
+
render: render ? render.apply(this) : undefined,
|
|
45
|
+
visible: schema.visible,
|
|
46
|
+
resizable: schema.resizable,
|
|
47
|
+
compareFunction: compareFunction ? compareFunction.bind(this) : undefined
|
|
48
|
+
};
|
|
49
|
+
this.#columns.push(column);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
get actionsColumn() {
|
|
53
|
+
return this.#actionsColumn;
|
|
54
|
+
}
|
|
55
|
+
get columns() {
|
|
56
|
+
return this.#columns;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* 获取数据字典值
|
|
60
|
+
* @param dict
|
|
61
|
+
* @param key
|
|
62
|
+
* @param keyCode
|
|
63
|
+
* @param keyText
|
|
64
|
+
* @param missingValue
|
|
65
|
+
* @protected
|
|
66
|
+
*/
|
|
67
|
+
getDictionaryText(dict, key, keyCode = 'code', keyText = 'text', missingValue = "Missing key: {{key}}") {
|
|
68
|
+
return (dict ?? []).find(item => item[keyCode] == key)?.[keyText] ?? utils.formatText(missingValue, { key });
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 比较两个字符串的大小
|
|
72
|
+
* @param {string} a - 第一个字符串
|
|
73
|
+
* @param {string} b - 第二个字符串
|
|
74
|
+
* @param {object} [options]
|
|
75
|
+
* @param {boolean} [options.ignoreCase=false] - 是否忽略大小写
|
|
76
|
+
* @param {string} [options.locale='en'] - 语言环境(如 'en', 'zh', 'fr' 等)
|
|
77
|
+
* @returns {number} -1(a<b),0(相等),1(a>b)
|
|
78
|
+
*/
|
|
79
|
+
compareStrings(a, b, options = {}) {
|
|
80
|
+
const { ignoreCase = false, locale = 'en' } = options;
|
|
81
|
+
// 如果需要忽略大小写
|
|
82
|
+
if (ignoreCase) {
|
|
83
|
+
a = a.toLowerCase();
|
|
84
|
+
b = b.toLowerCase();
|
|
85
|
+
}
|
|
86
|
+
const result = a.localeCompare(b, locale, { sensitivity: ignoreCase ? 'base' : 'variant' });
|
|
87
|
+
// localeCompare 可能返回负数或正数(不一定是 ±1),这里标准化
|
|
88
|
+
return result < 0 ? -1 : result > 0 ? 1 : 0;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import FlexiField, { type FlexiFieldSchema } from "./flexi_field/FlexiField";
|
|
2
|
+
import { type LayoutMode } from "./lib";
|
|
3
|
+
import { type FormInvalidateHandler } from "./flexi_form/FlexiForm";
|
|
4
|
+
import FlexiComposite from "./flexi_composite/FlexiComposite";
|
|
5
|
+
import FlexiCard from "./flexi_card/FlexiCard";
|
|
6
|
+
type FlexiElement = FlexiField | FlexiComposite | FlexiComposite[];
|
|
7
|
+
export default abstract class FlexiCompound<T extends FlexiElement = FlexiField> {
|
|
8
|
+
#private;
|
|
9
|
+
protected readonly _data: any;
|
|
10
|
+
protected _title: string | undefined;
|
|
11
|
+
protected _fields: Array<T>;
|
|
12
|
+
protected readonly field: {
|
|
13
|
+
[key: string]: FlexiField;
|
|
14
|
+
};
|
|
15
|
+
readonly label$style?: string;
|
|
16
|
+
readonly variant: string;
|
|
17
|
+
readonly mode: LayoutMode;
|
|
18
|
+
actions: Array<any>;
|
|
19
|
+
readonly props: any;
|
|
20
|
+
readonly cell: any;
|
|
21
|
+
protected constructor(data: any, readonly: boolean, disabled: boolean, variant: string, mode: LayoutMode, props: any, cell: any, title?: string, label$style?: string);
|
|
22
|
+
get readonly(): boolean;
|
|
23
|
+
protected setReadonly(value: boolean): void;
|
|
24
|
+
get disabled(): boolean;
|
|
25
|
+
protected setDisabled(value: boolean): void;
|
|
26
|
+
get fields(): Array<T>;
|
|
27
|
+
get title(): string | undefined;
|
|
28
|
+
protected buildFlexiFields(card: FlexiCard, fields: Array<FlexiFieldSchema>): FlexiField[];
|
|
29
|
+
setInvalidateHandler(value?: FormInvalidateHandler): void;
|
|
30
|
+
invalidate(): void;
|
|
31
|
+
validate(): boolean;
|
|
32
|
+
get data(): any;
|
|
33
|
+
}
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import FlexiField, {} from "./flexi_field/FlexiField";
|
|
2
|
+
import { Visibility } from "./lib";
|
|
3
|
+
import {} from "./flexi_form/FlexiForm";
|
|
4
|
+
import FlexiComposite from "./flexi_composite/FlexiComposite";
|
|
5
|
+
import FlexiCard from "./flexi_card/FlexiCard";
|
|
6
|
+
import beanValidator, { StringValidator } from "@ticatec/web-bean-validator";
|
|
7
|
+
import BaseValidator, {} from "@ticatec/web-bean-validator/dist/lib/BaseValidator";
|
|
8
|
+
export default class FlexiCompound {
|
|
9
|
+
_data;
|
|
10
|
+
_title;
|
|
11
|
+
_fields = [];
|
|
12
|
+
field = {};
|
|
13
|
+
#readonly;
|
|
14
|
+
#disabled;
|
|
15
|
+
label$style;
|
|
16
|
+
variant;
|
|
17
|
+
mode = "flex";
|
|
18
|
+
actions = [];
|
|
19
|
+
props;
|
|
20
|
+
cell;
|
|
21
|
+
#invalidateHandler;
|
|
22
|
+
constructor(data, readonly, disabled, variant, mode, props, cell, title, label$style) {
|
|
23
|
+
this._data = data;
|
|
24
|
+
this.#readonly = readonly;
|
|
25
|
+
this.#disabled = disabled;
|
|
26
|
+
this.label$style = label$style;
|
|
27
|
+
this.variant = variant;
|
|
28
|
+
this.mode = mode;
|
|
29
|
+
this._title = title;
|
|
30
|
+
this.props = props ?? {};
|
|
31
|
+
this.cell = cell ?? {};
|
|
32
|
+
}
|
|
33
|
+
get readonly() {
|
|
34
|
+
return this.#readonly;
|
|
35
|
+
}
|
|
36
|
+
setReadonly(value) {
|
|
37
|
+
this.#readonly = value;
|
|
38
|
+
}
|
|
39
|
+
get disabled() {
|
|
40
|
+
return this.#disabled;
|
|
41
|
+
}
|
|
42
|
+
setDisabled(value) {
|
|
43
|
+
this.#disabled = value;
|
|
44
|
+
}
|
|
45
|
+
get fields() {
|
|
46
|
+
return this._fields;
|
|
47
|
+
}
|
|
48
|
+
get title() {
|
|
49
|
+
return this._title;
|
|
50
|
+
}
|
|
51
|
+
buildFlexiFields(card, fields) {
|
|
52
|
+
let list = [];
|
|
53
|
+
for (let field of fields) {
|
|
54
|
+
list.push(new FlexiField(card, this._data, this.mode, field));
|
|
55
|
+
}
|
|
56
|
+
return list;
|
|
57
|
+
}
|
|
58
|
+
setInvalidateHandler(value) {
|
|
59
|
+
this.#invalidateHandler = value;
|
|
60
|
+
}
|
|
61
|
+
invalidate() {
|
|
62
|
+
this.#invalidateHandler?.();
|
|
63
|
+
}
|
|
64
|
+
validate() {
|
|
65
|
+
let valid = true;
|
|
66
|
+
for (const field of this._fields) {
|
|
67
|
+
if (field instanceof FlexiField) {
|
|
68
|
+
valid = field.validate() && valid;
|
|
69
|
+
}
|
|
70
|
+
else if (field instanceof FlexiComposite) {
|
|
71
|
+
valid = field.validate() && valid;
|
|
72
|
+
}
|
|
73
|
+
else if (Array.isArray(field) && field.length > 0 && field[0] instanceof FlexiComposite) {
|
|
74
|
+
for (const composite of field) {
|
|
75
|
+
valid = composite.validate() && valid;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return valid;
|
|
80
|
+
}
|
|
81
|
+
get data() {
|
|
82
|
+
return this._data;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<script lang="ts">import Dialog from "@ticatec/uniface-element/Dialog";
|
|
2
|
+
import FlexiFormPanel from "./flexi_form/FlexiFormPanel.svelte";
|
|
3
|
+
import { onMount } from "svelte";
|
|
4
|
+
export let form;
|
|
5
|
+
let title = form.getTitle();
|
|
6
|
+
let width = form.props.width ?? "800px";
|
|
7
|
+
let height = form.props.height ?? "600px";
|
|
8
|
+
let actions = [];
|
|
9
|
+
const closeConfirm = async () => {
|
|
10
|
+
let confirm = form.closeConfirm;
|
|
11
|
+
if (confirm) {
|
|
12
|
+
return confirm();
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
onMount(async () => {
|
|
19
|
+
//获取表单的action
|
|
20
|
+
});
|
|
21
|
+
</script>
|
|
22
|
+
<Dialog {width} {height} {title} {closeConfirm} {actions} content$style="padding: 12px">
|
|
23
|
+
<FlexiFormPanel {form} bind:actions/>
|
|
24
|
+
</Dialog>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type FlexiForm from "./flexi_form/FlexiForm";
|
|
2
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
3
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
+
$$bindings?: Bindings;
|
|
5
|
+
} & Exports;
|
|
6
|
+
(internal: unknown, props: Props & {
|
|
7
|
+
$$events?: Events;
|
|
8
|
+
$$slots?: Slots;
|
|
9
|
+
}): Exports & {
|
|
10
|
+
$set?: any;
|
|
11
|
+
$on?: any;
|
|
12
|
+
};
|
|
13
|
+
z_$$bindings?: Bindings;
|
|
14
|
+
}
|
|
15
|
+
declare const FlexiFormDialog: $$__sveltets_2_IsomorphicComponent<{
|
|
16
|
+
form: FlexiForm;
|
|
17
|
+
}, {
|
|
18
|
+
[evt: string]: CustomEvent<any>;
|
|
19
|
+
}, {}, {}, string>;
|
|
20
|
+
type FlexiFormDialog = InstanceType<typeof FlexiFormDialog>;
|
|
21
|
+
export default FlexiFormDialog;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<script lang="ts">import CommonFormPage from "@ticatec/uniface-micro-frame/CommonFormPage";
|
|
2
|
+
import FlexiFormPanel from "./flexi_form/FlexiFormPanel.svelte";
|
|
3
|
+
import FlexiForm from "./flexi_form/FlexiForm";
|
|
4
|
+
export let title;
|
|
5
|
+
export let comment = undefined;
|
|
6
|
+
export let style = undefined;
|
|
7
|
+
export let form;
|
|
8
|
+
export let readonly = false;
|
|
9
|
+
let page$attrs = {
|
|
10
|
+
title,
|
|
11
|
+
comment,
|
|
12
|
+
style
|
|
13
|
+
};
|
|
14
|
+
let actions = [];
|
|
15
|
+
const closeConfirm = async () => {
|
|
16
|
+
if (form.closeConfirm) {
|
|
17
|
+
return form.closeConfirm();
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
</script>
|
|
24
|
+
<CommonFormPage {page$attrs} {actions} canBeClosed {closeConfirm}>
|
|
25
|
+
<FlexiFormPanel {form} {readonly} bind:actions />
|
|
26
|
+
</CommonFormPage>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import FlexiForm from "./flexi_form/FlexiForm";
|
|
2
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
3
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
+
$$bindings?: Bindings;
|
|
5
|
+
} & Exports;
|
|
6
|
+
(internal: unknown, props: Props & {
|
|
7
|
+
$$events?: Events;
|
|
8
|
+
$$slots?: Slots;
|
|
9
|
+
}): Exports & {
|
|
10
|
+
$set?: any;
|
|
11
|
+
$on?: any;
|
|
12
|
+
};
|
|
13
|
+
z_$$bindings?: Bindings;
|
|
14
|
+
}
|
|
15
|
+
declare const FlexiFormPage: $$__sveltets_2_IsomorphicComponent<{
|
|
16
|
+
title: string;
|
|
17
|
+
comment?: string | undefined;
|
|
18
|
+
style?: string | undefined;
|
|
19
|
+
form: FlexiForm;
|
|
20
|
+
readonly?: boolean;
|
|
21
|
+
}, {
|
|
22
|
+
[evt: string]: CustomEvent<any>;
|
|
23
|
+
}, {}, {}, string>;
|
|
24
|
+
type FlexiFormPage = InstanceType<typeof FlexiFormPage>;
|
|
25
|
+
export default FlexiFormPage;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FlexiFormSchema } from "./flexi_form/FlexiForm";
|
|
2
|
+
import type { FlexiCardSchema } from "./flexi_card/FlexiCard";
|
|
3
|
+
import type { FlexiCompositeSchema } from "./flexi_composite/FlexiComposite";
|
|
4
|
+
import type { FlexiCompositeFieldSchema } from "./flexi_composite/FlexiComposite";
|
|
5
|
+
import type { FlexiFieldSchema } from "./flexi_field/FlexiField";
|
|
6
|
+
export type { FlexiFormSchema, FlexiCardSchema, FlexiCompositeSchema, FlexiCompositeFieldSchema, FlexiFieldSchema };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<div style="width: 100%; height: 0"></div>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export default BreakLine;
|
|
2
|
+
type BreakLine = SvelteComponent<{
|
|
3
|
+
[x: string]: never;
|
|
4
|
+
}, {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
}, {}> & {
|
|
7
|
+
$$bindings?: string | undefined;
|
|
8
|
+
};
|
|
9
|
+
declare const BreakLine: $$__sveltets_2_IsomorphicComponent<{
|
|
10
|
+
[x: string]: never;
|
|
11
|
+
}, {
|
|
12
|
+
[evt: string]: CustomEvent<any>;
|
|
13
|
+
}, {}, {}, string>;
|
|
14
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
15
|
+
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
16
|
+
$$bindings?: Bindings;
|
|
17
|
+
} & Exports;
|
|
18
|
+
(internal: unknown, props: {
|
|
19
|
+
$$events?: Events;
|
|
20
|
+
$$slots?: Slots;
|
|
21
|
+
}): Exports & {
|
|
22
|
+
$set?: any;
|
|
23
|
+
$on?: any;
|
|
24
|
+
};
|
|
25
|
+
z_$$bindings?: Bindings;
|
|
26
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script lang="ts">export let title;
|
|
2
|
+
export let collapsible = false;
|
|
3
|
+
export let collapse = false;
|
|
4
|
+
const toggleCard = () => {
|
|
5
|
+
collapse = !collapse;
|
|
6
|
+
};
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<div style="width: 100%; padding: 6px 8px; display: flex; flex-direction: row">
|
|
10
|
+
<div style="flex: 1 1 auto">
|
|
11
|
+
<span>{title}</span>
|
|
12
|
+
</div>
|
|
13
|
+
{#if collapsible}
|
|
14
|
+
<div style="padding: 4px 0;">
|
|
15
|
+
<i class={collapse ? 'uniface-icon-chevrons-down' : 'uniface-icon-chevrons-up'} on:click={toggleCard}></i>
|
|
16
|
+
</div>
|
|
17
|
+
{/if}
|
|
18
|
+
</div>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: Props & {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
declare const CardTitleBar: $$__sveltets_2_IsomorphicComponent<{
|
|
15
|
+
title: string;
|
|
16
|
+
collapsible?: boolean;
|
|
17
|
+
collapse?: boolean;
|
|
18
|
+
}, {
|
|
19
|
+
[evt: string]: CustomEvent<any>;
|
|
20
|
+
}, {}, {}, string>;
|
|
21
|
+
type CardTitleBar = InstanceType<typeof CardTitleBar>;
|
|
22
|
+
export default CardTitleBar;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<script lang="ts">import CascadeOptionSelect from "@ticatec/uniface-element/CascadeOptionsSelect";
|
|
2
|
+
import FlexiField from "../flexi_field/FlexiField";
|
|
3
|
+
export let field;
|
|
4
|
+
export let readonly;
|
|
5
|
+
export let disabled;
|
|
6
|
+
export let variant;
|
|
7
|
+
$: props = field.props;
|
|
8
|
+
$: data = field.data;
|
|
9
|
+
$: events = field.events;
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<CascadeOptionSelect bind:value={data[field.keyField]} variant={variant??field.variant} readonly={readonly || field.isReadonly}
|
|
13
|
+
disabled={disabled || field.disabled} {...props} {...events}/>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import FlexiField from "../flexi_field/FlexiField";
|
|
2
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
3
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
+
$$bindings?: Bindings;
|
|
5
|
+
} & Exports;
|
|
6
|
+
(internal: unknown, props: Props & {
|
|
7
|
+
$$events?: Events;
|
|
8
|
+
$$slots?: Slots;
|
|
9
|
+
}): Exports & {
|
|
10
|
+
$set?: any;
|
|
11
|
+
$on?: any;
|
|
12
|
+
};
|
|
13
|
+
z_$$bindings?: Bindings;
|
|
14
|
+
}
|
|
15
|
+
declare const CascadeOptionSelectField: $$__sveltets_2_IsomorphicComponent<{
|
|
16
|
+
field: FlexiField;
|
|
17
|
+
readonly: boolean;
|
|
18
|
+
disabled: boolean;
|
|
19
|
+
variant: "" | "outlined" | "filled";
|
|
20
|
+
}, {
|
|
21
|
+
[evt: string]: CustomEvent<any>;
|
|
22
|
+
}, {}, {}, string>;
|
|
23
|
+
type CascadeOptionSelectField = InstanceType<typeof CascadeOptionSelectField>;
|
|
24
|
+
export default CascadeOptionSelectField;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const registerFormFieldBuilder: () => void;
|