@tianyr/schema-antd 0.0.0-stage → 0.1.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/LICENSE +21 -0
- package/README.md +158 -2
- package/dist/SchemaField.d.ts +15 -0
- package/dist/SchemaField.d.ts.map +1 -0
- package/dist/SchemaField.js +107 -0
- package/dist/SchemaField.js.map +1 -0
- package/dist/SchemaForm.d.ts +22 -0
- package/dist/SchemaForm.d.ts.map +1 -0
- package/dist/SchemaForm.js +19 -0
- package/dist/SchemaForm.js.map +1 -0
- package/dist/TableFooter.d.ts +38 -0
- package/dist/TableFooter.d.ts.map +1 -0
- package/dist/TableFooter.js +16 -0
- package/dist/TableFooter.js.map +1 -0
- package/dist/app-select/AppSelect.d.ts +3 -0
- package/dist/app-select/AppSelect.d.ts.map +1 -0
- package/dist/app-select/AppSelect.js +56 -0
- package/dist/app-select/AppSelect.js.map +1 -0
- package/dist/app-select/AppSelectDisplay.d.ts +3 -0
- package/dist/app-select/AppSelectDisplay.d.ts.map +1 -0
- package/dist/app-select/AppSelectDisplay.js +39 -0
- package/dist/app-select/AppSelectDisplay.js.map +1 -0
- package/dist/app-select/cache.d.ts +26 -0
- package/dist/app-select/cache.d.ts.map +1 -0
- package/dist/app-select/cache.js +82 -0
- package/dist/app-select/cache.js.map +1 -0
- package/dist/app-select/hooks.d.ts +56 -0
- package/dist/app-select/hooks.d.ts.map +1 -0
- package/dist/app-select/hooks.js +322 -0
- package/dist/app-select/hooks.js.map +1 -0
- package/dist/app-select/index.d.ts +7 -0
- package/dist/app-select/index.d.ts.map +1 -0
- package/dist/app-select/index.js +6 -0
- package/dist/app-select/index.js.map +1 -0
- package/dist/app-select/register.d.ts +2 -0
- package/dist/app-select/register.d.ts.map +1 -0
- package/dist/app-select/register.js +10 -0
- package/dist/app-select/register.js.map +1 -0
- package/dist/app-select/sources.d.ts +20 -0
- package/dist/app-select/sources.d.ts.map +1 -0
- package/dist/app-select/sources.js +59 -0
- package/dist/app-select/sources.js.map +1 -0
- package/dist/app-select/types.d.ts +68 -0
- package/dist/app-select/types.d.ts.map +1 -0
- package/dist/app-select/types.js +2 -0
- package/dist/app-select/types.js.map +1 -0
- package/dist/app-select/utils.d.ts +30 -0
- package/dist/app-select/utils.d.ts.map +1 -0
- package/dist/app-select/utils.js +76 -0
- package/dist/app-select/utils.js.map +1 -0
- package/dist/editable-table/EditableTable.d.ts +3 -0
- package/dist/editable-table/EditableTable.d.ts.map +1 -0
- package/dist/editable-table/EditableTable.js +499 -0
- package/dist/editable-table/EditableTable.js.map +1 -0
- package/dist/editable-table/dirty.d.ts +17 -0
- package/dist/editable-table/dirty.d.ts.map +1 -0
- package/dist/editable-table/dirty.js +72 -0
- package/dist/editable-table/dirty.js.map +1 -0
- package/dist/editable-table/index.d.ts +4 -0
- package/dist/editable-table/index.d.ts.map +1 -0
- package/dist/editable-table/index.js +3 -0
- package/dist/editable-table/index.js.map +1 -0
- package/dist/editable-table/types.d.ts +109 -0
- package/dist/editable-table/types.d.ts.map +1 -0
- package/dist/editable-table/types.js +2 -0
- package/dist/editable-table/types.js.map +1 -0
- package/dist/env.d.ts +3 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +11 -0
- package/dist/env.js.map +1 -0
- package/dist/form/FormRuntimeHost.d.ts +39 -0
- package/dist/form/FormRuntimeHost.d.ts.map +1 -0
- package/dist/form/FormRuntimeHost.js +184 -0
- package/dist/form/FormRuntimeHost.js.map +1 -0
- package/dist/form/SchemaFormField.d.ts +15 -0
- package/dist/form/SchemaFormField.d.ts.map +1 -0
- package/dist/form/SchemaFormField.js +142 -0
- package/dist/form/SchemaFormField.js.map +1 -0
- package/dist/form/derive.d.ts +33 -0
- package/dist/form/derive.d.ts.map +1 -0
- package/dist/form/derive.js +59 -0
- package/dist/form/derive.js.map +1 -0
- package/dist/form/namePath.d.ts +12 -0
- package/dist/form/namePath.d.ts.map +1 -0
- package/dist/form/namePath.js +33 -0
- package/dist/form/namePath.js.map +1 -0
- package/dist/full-editable-table/EditableCell.d.ts +12 -0
- package/dist/full-editable-table/EditableCell.d.ts.map +1 -0
- package/dist/full-editable-table/EditableCell.js +8 -0
- package/dist/full-editable-table/EditableCell.js.map +1 -0
- package/dist/full-editable-table/EditableRow.d.ts +8 -0
- package/dist/full-editable-table/EditableRow.d.ts.map +1 -0
- package/dist/full-editable-table/EditableRow.js +23 -0
- package/dist/full-editable-table/EditableRow.js.map +1 -0
- package/dist/full-editable-table/FullEditableTable.d.ts +3 -0
- package/dist/full-editable-table/FullEditableTable.d.ts.map +1 -0
- package/dist/full-editable-table/FullEditableTable.js +384 -0
- package/dist/full-editable-table/FullEditableTable.js.map +1 -0
- package/dist/full-editable-table/context.d.ts +4 -0
- package/dist/full-editable-table/context.d.ts.map +1 -0
- package/dist/full-editable-table/context.js +6 -0
- package/dist/full-editable-table/context.js.map +1 -0
- package/dist/full-editable-table/index.d.ts +3 -0
- package/dist/full-editable-table/index.d.ts.map +1 -0
- package/dist/full-editable-table/index.js +2 -0
- package/dist/full-editable-table/index.js.map +1 -0
- package/dist/full-editable-table/types.d.ts +95 -0
- package/dist/full-editable-table/types.d.ts.map +1 -0
- package/dist/full-editable-table/types.js +2 -0
- package/dist/full-editable-table/types.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/read.d.ts +14 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/read.js +151 -0
- package/dist/read.js.map +1 -0
- package/dist/registry.d.ts +24 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +49 -0
- package/dist/registry.js.map +1 -0
- package/dist/rowMerge.d.ts +2 -0
- package/dist/rowMerge.d.ts.map +1 -0
- package/dist/rowMerge.js +32 -0
- package/dist/rowMerge.js.map +1 -0
- package/dist/tableScroll.d.ts +10 -0
- package/dist/tableScroll.d.ts.map +1 -0
- package/dist/tableScroll.js +14 -0
- package/dist/tableScroll.js.map +1 -0
- package/dist/types.d.ts +128 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +60 -4
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { SelectProps } from 'antd';
|
|
3
|
+
export type SelectId = string | number;
|
|
4
|
+
export interface AppOption<T = unknown> {
|
|
5
|
+
value: SelectId;
|
|
6
|
+
label: string;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
/** 原始接口记录,供业务回调使用;不会被写进历史对象协议 */
|
|
9
|
+
raw?: T;
|
|
10
|
+
}
|
|
11
|
+
/** 历史服务端协议:{ value, label } */
|
|
12
|
+
export type LegacyValue = {
|
|
13
|
+
value: SelectId;
|
|
14
|
+
label: string;
|
|
15
|
+
};
|
|
16
|
+
export type AppValueMode = 'primitive' | 'object';
|
|
17
|
+
export interface AppSelectSource {
|
|
18
|
+
kind: 'static' | 'dict' | 'remote';
|
|
19
|
+
/** static/dict:有限集合,直接给或异步加载一次 */
|
|
20
|
+
loadOptions?: () => AppOption[] | Promise<AppOption[]>;
|
|
21
|
+
/** remote:关键词搜索,允许空关键词返回默认候选 */
|
|
22
|
+
search?: (keyword: string, params?: Record<string, unknown>, signal?: AbortSignal) => Promise<AppOption[]>;
|
|
23
|
+
/** remote:按 ID 精确解析,不能用模糊搜索冒充 */
|
|
24
|
+
resolve?: (id: SelectId, params?: Record<string, unknown>, signal?: AbortSignal) => Promise<AppOption | null>;
|
|
25
|
+
/** 租户/权限命名空间:参与解析缓存键,缺省视为同一命名空间 */
|
|
26
|
+
cacheNamespace?: () => string;
|
|
27
|
+
/**
|
|
28
|
+
* 必须齐备的查询参数(按 queryParams 的键声明)。
|
|
29
|
+
* 缺少任何一个都不发请求:用空条件去查,轻则查不到,重则拿到别的租户/省份的记录。
|
|
30
|
+
*/
|
|
31
|
+
requiredParams?: string[];
|
|
32
|
+
}
|
|
33
|
+
/** 应用级数据源注册表;page 局部接口可直接传 dataSource,不必注册 */
|
|
34
|
+
export type AppSelectSourceRegistry = Map<string, AppSelectSource>;
|
|
35
|
+
type BaseProps = Omit<SelectProps, 'value' | 'defaultValue' | 'onChange' | 'options' | 'labelInValue' | 'mode' | 'onSearch'> & {
|
|
36
|
+
source?: string;
|
|
37
|
+
dataSource?: AppSelectSource;
|
|
38
|
+
options?: AppOption[];
|
|
39
|
+
queryParams?: Record<string, unknown>;
|
|
40
|
+
/** remote 默认 300ms */
|
|
41
|
+
debounceMs?: number;
|
|
42
|
+
/** 详情已经带回名称时用它省掉一次 resolve */
|
|
43
|
+
selectedOptions?: AppOption[];
|
|
44
|
+
/** 只读展示时的占位符 */
|
|
45
|
+
emptyText?: ReactNode;
|
|
46
|
+
};
|
|
47
|
+
type PrimitiveModeProps = {
|
|
48
|
+
valueMode?: 'primitive';
|
|
49
|
+
value?: SelectId | null;
|
|
50
|
+
onChange?: (value: SelectId | undefined, option?: AppOption) => void;
|
|
51
|
+
};
|
|
52
|
+
type ObjectModeProps = {
|
|
53
|
+
valueMode: 'object';
|
|
54
|
+
value?: LegacyValue | null;
|
|
55
|
+
onChange?: (value: LegacyValue | undefined, option?: AppOption) => void;
|
|
56
|
+
};
|
|
57
|
+
export type AppSelectProps = BaseProps & (PrimitiveModeProps | ObjectModeProps);
|
|
58
|
+
export interface AppSelectDisplayProps {
|
|
59
|
+
source?: string;
|
|
60
|
+
dataSource?: AppSelectSource;
|
|
61
|
+
value?: SelectId | LegacyValue | null;
|
|
62
|
+
valueMode?: AppValueMode;
|
|
63
|
+
queryParams?: Record<string, unknown>;
|
|
64
|
+
selectedOptions?: AppOption[];
|
|
65
|
+
emptyText?: ReactNode;
|
|
66
|
+
}
|
|
67
|
+
export {};
|
|
68
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/app-select/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAExC,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvC,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,OAAO;IACpC,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iCAAiC;IACjC,GAAG,CAAC,EAAE,CAAC,CAAC;CACT;AAED,+BAA+B;AAC/B,MAAM,MAAM,WAAW,GAAG;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IACnC,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,SAAS,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACvD,gCAAgC;IAChC,MAAM,CAAC,EAAE,CACP,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1B,iCAAiC;IACjC,OAAO,CAAC,EAAE,CACR,EAAE,EAAE,QAAQ,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC/B,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,MAAM,CAAC;IAC9B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,8CAA8C;AAC9C,MAAM,MAAM,uBAAuB,GAAG,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAEnE,KAAK,SAAS,GAAG,IAAI,CACnB,WAAW,EACX,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,cAAc,GAAG,MAAM,GAAG,UAAU,CACzF,GAAG;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,sBAAsB;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC;IAC9B,gBAAgB;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;CACtE,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,SAAS,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;CACzE,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,CAAC,kBAAkB,GAAG,eAAe,CAAC,CAAC;AAEhF,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,KAAK,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/app-select/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AppOption, SelectId } from './types.js';
|
|
2
|
+
/** 键序稳定的序列化,避免同一个 queryParams 因对象字面量顺序不同而重复请求 */
|
|
3
|
+
export declare function stableStringify(value: unknown): string;
|
|
4
|
+
/**
|
|
5
|
+
* 空 ID 的统一口径:`undefined` / `null` / `''` 都视为未选择。
|
|
6
|
+
* 后端序列化空值常给空串,若只判 null 会多跑一次 resolve('')。
|
|
7
|
+
*/
|
|
8
|
+
export declare function isEmptyId(value: SelectId | null | undefined): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* 必需的查询参数是否齐备。
|
|
11
|
+
* 缺任何一个都不该发请求——用空条件解析,可能拿到别的租户/省份的记录。
|
|
12
|
+
*/
|
|
13
|
+
export declare function hasRequiredParams(required: string[] | undefined, params: Record<string, unknown> | undefined): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* 选项内容键:父组件每次渲染新建数组时,用它判断内容是否真的变了。
|
|
16
|
+
* 用内容而不是引用做依赖,才符合设计文档 §10 的要求。
|
|
17
|
+
*/
|
|
18
|
+
export declare function optionsContentKey(list?: AppOption[] | null): string;
|
|
19
|
+
/** 解析缓存键:必须覆盖 source + value + queryParams,并可带权限命名空间 */
|
|
20
|
+
export declare function buildResolveKey(parts: {
|
|
21
|
+
scope?: string;
|
|
22
|
+
sourceKey: string;
|
|
23
|
+
value: SelectId;
|
|
24
|
+
params?: Record<string, unknown>;
|
|
25
|
+
}): string;
|
|
26
|
+
/** 把 AntD Select 的选中项选项收敛成标准 AppOption */
|
|
27
|
+
export declare function normalizeOption(option: unknown): AppOption | undefined;
|
|
28
|
+
/** 已选项 + 候选合并去重,已选项优先,保证回显标签不被搜索结果覆盖 */
|
|
29
|
+
export declare function mergeOptions(selected: AppOption | null, ...groups: (AppOption[] | undefined)[]): AppOption[];
|
|
30
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/app-select/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnD,iDAAiD;AACjD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOtD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAErE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,EAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC1C,OAAO,CAQT;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,GAAG,MAAM,CAKnE;AAED,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,GAAG,MAAM,CAET;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAUtE;AAED,wCAAwC;AACxC,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,SAAS,GAAG,IAAI,EAC1B,GAAG,MAAM,EAAE,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,EAAE,GACrC,SAAS,EAAE,CASb"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/** 键序稳定的序列化,避免同一个 queryParams 因对象字面量顺序不同而重复请求 */
|
|
2
|
+
export function stableStringify(value) {
|
|
3
|
+
if (value === undefined)
|
|
4
|
+
return 'undefined';
|
|
5
|
+
if (value === null || typeof value !== 'object')
|
|
6
|
+
return JSON.stringify(value);
|
|
7
|
+
if (Array.isArray(value))
|
|
8
|
+
return `[${value.map(stableStringify).join(',')}]`;
|
|
9
|
+
const record = value;
|
|
10
|
+
const keys = Object.keys(record).sort();
|
|
11
|
+
return `{${keys.map((key) => `${JSON.stringify(key)}:${stableStringify(record[key])}`).join(',')}}`;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 空 ID 的统一口径:`undefined` / `null` / `''` 都视为未选择。
|
|
15
|
+
* 后端序列化空值常给空串,若只判 null 会多跑一次 resolve('')。
|
|
16
|
+
*/
|
|
17
|
+
export function isEmptyId(value) {
|
|
18
|
+
return value === undefined || value === null || value === '';
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 必需的查询参数是否齐备。
|
|
22
|
+
* 缺任何一个都不该发请求——用空条件解析,可能拿到别的租户/省份的记录。
|
|
23
|
+
*/
|
|
24
|
+
export function hasRequiredParams(required, params) {
|
|
25
|
+
if (!required || !required.length)
|
|
26
|
+
return true;
|
|
27
|
+
return required.every((key) => {
|
|
28
|
+
const value = params?.[key];
|
|
29
|
+
if (value === undefined || value === null || value === '')
|
|
30
|
+
return false;
|
|
31
|
+
if (Array.isArray(value) && value.length === 0)
|
|
32
|
+
return false;
|
|
33
|
+
return true;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 选项内容键:父组件每次渲染新建数组时,用它判断内容是否真的变了。
|
|
38
|
+
* 用内容而不是引用做依赖,才符合设计文档 §10 的要求。
|
|
39
|
+
*/
|
|
40
|
+
export function optionsContentKey(list) {
|
|
41
|
+
if (!list || !list.length)
|
|
42
|
+
return '';
|
|
43
|
+
return stableStringify(list.map((item) => [typeof item.value, item.value, item.label, item.disabled ?? false]));
|
|
44
|
+
}
|
|
45
|
+
/** 解析缓存键:必须覆盖 source + value + queryParams,并可带权限命名空间 */
|
|
46
|
+
export function buildResolveKey(parts) {
|
|
47
|
+
return [parts.scope ?? '', parts.sourceKey, typeof parts.value, String(parts.value), stableStringify(parts.params ?? null)].join('|');
|
|
48
|
+
}
|
|
49
|
+
/** 把 AntD Select 的选中项选项收敛成标准 AppOption */
|
|
50
|
+
export function normalizeOption(option) {
|
|
51
|
+
if (!option || typeof option !== 'object')
|
|
52
|
+
return undefined;
|
|
53
|
+
const record = option;
|
|
54
|
+
if (record.value === undefined)
|
|
55
|
+
return undefined;
|
|
56
|
+
return {
|
|
57
|
+
value: record.value,
|
|
58
|
+
label: typeof record.label === 'string' ? record.label : String(record.label ?? record.value),
|
|
59
|
+
disabled: record.disabled,
|
|
60
|
+
raw: record.raw,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/** 已选项 + 候选合并去重,已选项优先,保证回显标签不被搜索结果覆盖 */
|
|
64
|
+
export function mergeOptions(selected, ...groups) {
|
|
65
|
+
const map = new Map();
|
|
66
|
+
if (selected)
|
|
67
|
+
map.set(selected.value, selected);
|
|
68
|
+
for (const group of groups) {
|
|
69
|
+
for (const option of group ?? []) {
|
|
70
|
+
if (!map.has(option.value))
|
|
71
|
+
map.set(option.value, option);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return [...map.values()];
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/app-select/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditableTable.d.ts","sourceRoot":"","sources":["../../src/editable-table/EditableTable.tsx"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAGV,sBAAsB,EAIvB,MAAM,SAAS,CAAC;AAgmBjB,eAAO,MAAM,aAAa,EAAgD,sBAAsB,CAAC"}
|