@tianyr/schema-antd 0.1.1 → 0.2.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.
Files changed (73) hide show
  1. package/README.md +17 -2
  2. package/dist/biz-select/BizMultiSelect.d.ts +3 -0
  3. package/dist/biz-select/BizMultiSelect.d.ts.map +1 -0
  4. package/dist/biz-select/BizMultiSelect.js +120 -0
  5. package/dist/biz-select/BizMultiSelect.js.map +1 -0
  6. package/dist/biz-select/BizMultiSelectDisplay.d.ts +3 -0
  7. package/dist/biz-select/BizMultiSelectDisplay.d.ts.map +1 -0
  8. package/dist/biz-select/BizMultiSelectDisplay.js +59 -0
  9. package/dist/biz-select/BizMultiSelectDisplay.js.map +1 -0
  10. package/dist/biz-select/BizSelect.d.ts.map +1 -1
  11. package/dist/biz-select/BizSelect.js +5 -5
  12. package/dist/biz-select/BizSelect.js.map +1 -1
  13. package/dist/biz-select/BizSelectDisplay.js +6 -6
  14. package/dist/biz-select/BizSelectDisplay.js.map +1 -1
  15. package/dist/biz-select/cache.d.ts +7 -0
  16. package/dist/biz-select/cache.d.ts.map +1 -1
  17. package/dist/biz-select/cache.js +11 -0
  18. package/dist/biz-select/cache.js.map +1 -1
  19. package/dist/biz-select/compile.d.ts +13 -2
  20. package/dist/biz-select/compile.d.ts.map +1 -1
  21. package/dist/biz-select/compile.js +24 -3
  22. package/dist/biz-select/compile.js.map +1 -1
  23. package/dist/biz-select/factories.d.ts +22 -13
  24. package/dist/biz-select/factories.d.ts.map +1 -1
  25. package/dist/biz-select/factories.js +57 -7
  26. package/dist/biz-select/factories.js.map +1 -1
  27. package/dist/biz-select/format.d.ts +29 -11
  28. package/dist/biz-select/format.d.ts.map +1 -1
  29. package/dist/biz-select/format.js +100 -35
  30. package/dist/biz-select/format.js.map +1 -1
  31. package/dist/biz-select/index.d.ts +7 -2
  32. package/dist/biz-select/index.d.ts.map +1 -1
  33. package/dist/biz-select/index.js +4 -0
  34. package/dist/biz-select/index.js.map +1 -1
  35. package/dist/biz-select/key.d.ts +12 -2
  36. package/dist/biz-select/key.d.ts.map +1 -1
  37. package/dist/biz-select/key.js +14 -0
  38. package/dist/biz-select/key.js.map +1 -1
  39. package/dist/biz-select/normalize.d.ts +3 -0
  40. package/dist/biz-select/normalize.d.ts.map +1 -1
  41. package/dist/biz-select/normalize.js +4 -1
  42. package/dist/biz-select/normalize.js.map +1 -1
  43. package/dist/biz-select/resolveBatch.d.ts +34 -0
  44. package/dist/biz-select/resolveBatch.d.ts.map +1 -0
  45. package/dist/biz-select/resolveBatch.js +124 -0
  46. package/dist/biz-select/resolveBatch.js.map +1 -0
  47. package/dist/biz-select/schema.d.ts +1 -1
  48. package/dist/biz-select/schema.d.ts.map +1 -1
  49. package/dist/biz-select/schema.js +8 -1
  50. package/dist/biz-select/schema.js.map +1 -1
  51. package/dist/biz-select/types.d.ts +74 -18
  52. package/dist/biz-select/types.d.ts.map +1 -1
  53. package/dist/biz-select/useResolvedLabels.d.ts +28 -0
  54. package/dist/biz-select/useResolvedLabels.d.ts.map +1 -0
  55. package/dist/biz-select/useResolvedLabels.js +151 -0
  56. package/dist/biz-select/useResolvedLabels.js.map +1 -0
  57. package/dist/biz-select/useSelectedLabel.d.ts +2 -2
  58. package/dist/biz-select/useSelectedLabel.d.ts.map +1 -1
  59. package/dist/biz-select/useSelectedLabel.js +14 -16
  60. package/dist/biz-select/useSelectedLabel.js.map +1 -1
  61. package/dist/biz-select/useSelectedLabels.d.ts +26 -0
  62. package/dist/biz-select/useSelectedLabels.d.ts.map +1 -0
  63. package/dist/biz-select/useSelectedLabels.js +88 -0
  64. package/dist/biz-select/useSelectedLabels.js.map +1 -0
  65. package/dist/flat.d.ts +43 -0
  66. package/dist/flat.d.ts.map +1 -0
  67. package/dist/flat.js +91 -0
  68. package/dist/flat.js.map +1 -0
  69. package/dist/index.d.ts +2 -0
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +2 -0
  72. package/dist/index.js.map +1 -1
  73. package/package.json +1 -1
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  - **不内置 antd**:`antd` / `react` 全部是 peer 依赖,产物只有 ESM 与类型声明
7
7
  - **一份绑定层**:普通表单和两种表格的行复用同一个字段绑定,联动语义完全一致
8
8
  - **可编辑列三态**:`true` 编辑、`'read'` 只读但跟随本行 Form(能看到联动带出的值)、`false` 直接读行记录
9
- - **业务下拉**:`BizSelect` 把候选来源、编码回显、级联接入收进一个组件,值默认存编码
9
+ - **业务下拉**:`BizSelect` 把候选来源、名称回显、级联接入收进一个组件,值默认存标量;选项契约 `{ value, label }`
10
10
 
11
11
  ## 安装
12
12
 
@@ -130,6 +130,7 @@ defineSelectSources({
130
130
  province: staticList(PROVINCES), // 前端常量,不发请求
131
131
  currency: loaded(api.listCurrency), // 一次拉全量,之后前端过滤
132
132
  material: remote({ // 关键词交给后端,另配编码精确回显
133
+ recordFields: { value: 'code', label: 'name' }, // 后端记录字段名 → 契约 { value, label }
133
134
  search: (keyword, params, signal) => api.pageMaterial({ keyword, ...params }, signal),
134
135
  resolve: (code, params, signal) => api.getMaterial(code, params, signal),
135
136
  requiredParams: ['warehouseCode'], // 缺参数不发请求,避免查到别家数据
@@ -143,8 +144,15 @@ defineSelectSources({
143
144
 
144
145
  // 只读:同一套名称解析,不挂 Select
145
146
  <BizSelectDisplay source="material" params={{ warehouseCode }} value={materialCode} />
147
+
148
+ // 多选:独立组件,值是编码数组(schema 里的类型名是 'BizMultiSelect')
149
+ <BizMultiSelect source="material" params={{ warehouseCode }} value={codes} onChange={setCodes} />
146
150
  ```
147
151
 
152
+ 多选刻意不做成 `mode` 属性:值类型属于 API 面,合并会把 `BizSelectProps.value` 拓宽成联合。
153
+ 候选、搜索、展示转换、批量解析与单选完全共用;清空时输出 `undefined`(不是 `[]`),
154
+ 这样 `required` 规则天然生效。
155
+
148
156
  在 schema 里用,级联一行配完(先调一次 `registerBizSelectField()` 注册类型):
149
157
 
150
158
  ```tsx
@@ -160,11 +168,18 @@ defineSelectSources({
160
168
 
161
169
  约定:
162
170
 
171
+ - 选项契约是 `{ value, label }`,和 antd 同词汇;后端 `{ code, name }`、`{ userId, userName }` 在源的
172
+ `recordFields` 上映射一次(`staticList(list, recordFields)`,`loaded(load, { recordFields })`,`remote({ recordFields })`)。
173
+ 没声明就视为已经是 `{ value, label }`,不做自动嗅探。
163
174
  - 行为由源的能力推导:`options` 前端常量、`load` 一次拉全量后前端过滤、`search` 后端搜索,三者可组合。
164
- - `resolve(code)` 专用于按编码精确回显,不要用模糊搜索冒充。
175
+ - `resolve(value)` 专用于按值精确回显,不要用模糊搜索冒充。
165
176
  - `requiredParams` 不齐时进入 `blocked`:候选为空、不发请求。
166
177
  - `invalidateSelectSource(name)` 让已挂载的实例重新取数;`useCandidates` 可把同一份候选给树、弹窗复用。
178
+ - 表格列只有 id 时用 `useResolvedLabels` 批量解析:源声明了 `resolveMany` 才会合并成一次请求,
179
+ 没声明就逐条(开发态告警一次)。有限枚举的列应该用 `load` 型源一次拉全量,不必逐条解析。
167
180
  - 内联源要跨实例共享缓存,就传导入的函数或显式 `cacheKey`;内联箭头每次渲染都换键,缓存命中不了。
181
+ - 已经是 `{ value, label }` 形状的本地枚举(数据字典、常量表)直接 `staticList` 即可,不必再写 `recordFields`;
182
+ 分组选项和树形选项不在范围内(契约是扁平结构)。详见 `src/biz-select/README.md` §4。
168
183
 
169
184
  ## 其他导出
170
185
 
@@ -0,0 +1,3 @@
1
+ import type { BizMultiSelectProps } from './types.js';
2
+ export declare function BizMultiSelect(props: BizMultiSelectProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=BizMultiSelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BizMultiSelect.d.ts","sourceRoot":"","sources":["../../src/biz-select/BizMultiSelect.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,mBAAmB,EAAqC,MAAM,SAAS,CAAC;AAetF,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,+BAsIxD"}
@@ -0,0 +1,120 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * BizMultiSelect:业务下拉的多选态。
4
+ *
5
+ * 和 `BizSelect` 共用候选、展示转换和批量解析,差别只在值:
6
+ * 一个是标量/对象,一个是它们的数组。刻意做成独立组件而不是 `mode` 属性,
7
+ * 因为值类型属于 API 面——合并会把 `BizSelectProps.value` 拓宽成联合,
8
+ * 所有存量调用点跟着变宽,而我们没有任何地方需要这种兼容。
9
+ */
10
+ import { useEffect, useMemo } from 'react';
11
+ import { Select } from 'antd';
12
+ import { normalizeSource } from './normalize.js';
13
+ import { resolveSelectSource } from './registry.js';
14
+ import { useCandidates } from './useCandidates.js';
15
+ import { useSelectedLabels } from './useSelectedLabels.js';
16
+ import { buildObjectValues, defaultSearchFields, readObjectLabels, readValues, toAntOption, } from './format.js';
17
+ const DEFAULT_BLOCKED_TEXT = '请先选择上级';
18
+ /** antd 在多选下回传的是已选项数组;单选偶发单个对象,两种都接住 */
19
+ function pickedOptions(antOption) {
20
+ const list = Array.isArray(antOption) ? antOption : antOption ? [antOption] : [];
21
+ const picked = [];
22
+ for (const item of list) {
23
+ const raw = item?.raw;
24
+ if (raw)
25
+ picked.push(raw);
26
+ }
27
+ return picked;
28
+ }
29
+ export function BizMultiSelect(props) {
30
+ const { source, params, displayMode = 'L', searchFields, seedOptions, debounceMs, cacheKey, blockedText = DEFAULT_BLOCKED_TEXT, valueMode = 'primitive', valueFields, value, onChange, disabled, placeholder, ...rest } = props;
31
+ const codes = readValues(value, valueMode, valueFields);
32
+ const valueNames = readObjectLabels(value, valueMode, valueFields);
33
+ const sourceObj = resolveSelectSource(source);
34
+ const candidates = useCandidates({
35
+ source,
36
+ cacheKey,
37
+ params,
38
+ searchFields: searchFields ?? defaultSearchFields(displayMode),
39
+ debounceMs,
40
+ });
41
+ const { sourceKey } = candidates;
42
+ const selected = useSelectedLabels({
43
+ source,
44
+ cacheKey,
45
+ sourceKey,
46
+ codes,
47
+ valueNames,
48
+ seedOptions,
49
+ // 回显查未过滤全集,否则输入关键词后已选项会被筛掉、名称退回编码
50
+ candidates: candidates.echoOptions,
51
+ params,
52
+ });
53
+ // load 型没有 resolve,名称只能从全集里找:只要有编码说不清名字就先拉一次
54
+ const needEchoLoad = selected.status === 'missing' && normalizeSource(sourceObj).candidateMode === 'load';
55
+ useEffect(() => {
56
+ if (needEchoLoad)
57
+ candidates.open();
58
+ }, [needEchoLoad, sourceKey, candidates.open]);
59
+ const byCode = useMemo(() => {
60
+ const map = new Map();
61
+ for (const option of candidates.options)
62
+ map.set(String(option.value), option);
63
+ for (const option of selected.options)
64
+ map.set(String(option.value), option);
65
+ return map;
66
+ }, [candidates.options, selected.options]);
67
+ /**
68
+ * 已选项始终补回候选。
69
+ *
70
+ * 单选在搜索态会跳过补回(避免结果里混进一条不匹配的记录),多选不能这么做:
71
+ * antd 的 tag 文本是从候选里查的,候选里没有就退化成裸编码,搜索时整排 tag 一起变编码,
72
+ * 比多一行已选项难看得多。
73
+ */
74
+ const antOptions = useMemo(() => {
75
+ const list = candidates.options.map((item) => toAntOption(item, displayMode));
76
+ const present = new Set(list.map((item) => String(item.value)));
77
+ for (const option of selected.options) {
78
+ const key = String(option.value);
79
+ if (present.has(key))
80
+ continue;
81
+ present.add(key);
82
+ list.push(toAntOption(option, displayMode));
83
+ }
84
+ return list;
85
+ }, [candidates.options, selected.options, displayMode]);
86
+ const handleChange = (next, antOption) => {
87
+ const list = (Array.isArray(next) ? next : []).filter((item) => item !== undefined && item !== null && item !== '');
88
+ const emit = onChange;
89
+ // 清空给 undefined 而不是 []:与 ctx.clear() 一致,也让 required 规则天然生效
90
+ if (!list.length) {
91
+ emit?.(undefined, []);
92
+ return;
93
+ }
94
+ // 刚选中/刚取消的项 antd 会给回来:以它为准,再退回候选和已解析结果
95
+ const picked = new Map();
96
+ for (const option of pickedOptions(antOption))
97
+ picked.set(String(option.value), option);
98
+ const lookup = (code) => picked.get(String(code)) ?? byCode.get(String(code));
99
+ const options = list.map((code) => lookup(code) ?? { value: code });
100
+ if (valueMode === 'object') {
101
+ const objectMap = new Map();
102
+ for (const option of options)
103
+ objectMap.set(String(option.value), option);
104
+ emit?.(buildObjectValues(list, objectMap, valueFields), options);
105
+ return;
106
+ }
107
+ emit?.(list, options);
108
+ };
109
+ return (_jsx(Select, { ...rest, mode: "multiple",
110
+ // 候选由数据源决定,一律关掉 antd 自带过滤:本地过滤已在 hook 里做
111
+ filterOption: false, showSearch: true, options: antOptions, value: codes, loading: candidates.loading || selected.status === 'loading' || rest.loading, disabled: disabled || candidates.blocked, placeholder: candidates.blocked ? blockedText : placeholder, notFoundContent: candidates.blocked ? (blockedText) : candidates.error ? (
112
+ // 失败得能重试:静默给一个空列表等于让用户以为「确实没有」
113
+ _jsx("a", { onClick: () => candidates.reload(), children: "\u52A0\u8F7D\u5931\u8D25\uFF0C\u70B9\u51FB\u91CD\u8BD5" })) : (rest.notFoundContent), onSearch: candidates.search, onChange: handleChange, onDropdownVisibleChange: (opened) => {
114
+ if (opened)
115
+ candidates.open();
116
+ else
117
+ candidates.resetKeyword();
118
+ } }));
119
+ }
120
+ //# sourceMappingURL=BizMultiSelect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BizMultiSelect.js","sourceRoot":"","sources":["../../src/biz-select/BizMultiSelect.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BizMultiSelectDisplayProps } from './types.js';
2
+ export declare function BizMultiSelectDisplay(props: BizMultiSelectDisplayProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=BizMultiSelectDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BizMultiSelectDisplay.d.ts","sourceRoot":"","sources":["../../src/biz-select/BizMultiSelectDisplay.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAa1D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,+BAkDtE"}
@@ -0,0 +1,59 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * BizMultiSelect 的只读态。
4
+ *
5
+ * 与 `BizSelectDisplay` 对称:复用同一套名称解析,不挂载 Select。
6
+ * 解析不出的编码原样显示——宁可露出「查不到」,也不要编一个名字出来。
7
+ */
8
+ import { useEffect } from 'react';
9
+ import { EMPTY, defaultSearchFields, formatLabel, readObjectLabels, readValues } from './format.js';
10
+ import { normalizeSource } from './normalize.js';
11
+ import { resolveSelectSource } from './registry.js';
12
+ import { useCandidates } from './useCandidates.js';
13
+ import { useSelectedLabels } from './useSelectedLabels.js';
14
+ /** 与 read.tsx 的 MULTI_SEPARATOR 保持一致 */
15
+ const DEFAULT_SEPARATOR = '、';
16
+ /** 状态说明挂在 title 上:不能把「没查到」误认为「业务值为空」 */
17
+ const STATUS_TITLE = {
18
+ loading: '正在解析名称',
19
+ missing: '部分名称未找到,显示原始值',
20
+ blocked: '缺少必需参数,未解析名称',
21
+ error: '名称解析失败,显示原始值',
22
+ };
23
+ export function BizMultiSelectDisplay(props) {
24
+ const { source, params, displayMode = 'L', seedOptions, cacheKey, emptyText = EMPTY, valueMode = 'primitive', valueFields, value, separator = DEFAULT_SEPARATOR, } = props;
25
+ const sourceObj = resolveSelectSource(source);
26
+ const codes = readValues(value, valueMode, valueFields);
27
+ const valueNames = readObjectLabels(value, valueMode, valueFields);
28
+ // 只有 load 型需要为回显拉一次全集:它没有 resolve,名称只能从全集里找
29
+ const candidates = useCandidates({
30
+ source,
31
+ cacheKey,
32
+ params,
33
+ searchFields: defaultSearchFields(displayMode),
34
+ });
35
+ const { sourceKey } = candidates;
36
+ const selected = useSelectedLabels({
37
+ source,
38
+ cacheKey,
39
+ sourceKey,
40
+ codes,
41
+ valueNames,
42
+ seedOptions,
43
+ candidates: candidates.echoOptions,
44
+ params,
45
+ });
46
+ const needEchoLoad = selected.status === 'missing' && normalizeSource(sourceObj).candidateMode === 'load';
47
+ useEffect(() => {
48
+ if (needEchoLoad)
49
+ candidates.open();
50
+ }, [needEchoLoad, sourceKey, candidates.open]);
51
+ if (!codes.length)
52
+ return _jsx(_Fragment, { children: emptyText });
53
+ // 只返回内容本身:外层 schema-field-read 由 SchemaField 统一包,
54
+ // 这里再套一层会得到双层 span。title 只在解析异常时挂。
55
+ const text = selected.options.map((option) => formatLabel(option, displayMode)).join(separator);
56
+ const title = STATUS_TITLE[selected.status];
57
+ return title ? _jsx("span", { title: title, children: text }) : _jsx(_Fragment, { children: text });
58
+ }
59
+ //# sourceMappingURL=BizMultiSelectDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BizMultiSelectDisplay.js","sourceRoot":"","sources":["../../src/biz-select/BizMultiSelectDisplay.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD,wCAAwC;AACxC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,wCAAwC;AACxC,MAAM,YAAY,GAA4C;IAC5D,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,cAAc;IACvB,KAAK,EAAE,cAAc;CACtB,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,KAAiC;IACrE,MAAM,EACJ,MAAM,EACN,MAAM,EACN,WAAW,GAAG,GAAG,EACjB,WAAW,EACX,QAAQ,EACR,SAAS,GAAG,KAAK,EACjB,SAAS,GAAG,WAAW,EACvB,WAAW,EACX,KAAK,EACL,SAAS,GAAG,iBAAiB,GAC9B,GAAG,KAAK,CAAC;IAEV,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAEnE,4CAA4C;IAC5C,MAAM,UAAU,GAAG,aAAa,CAAC;QAC/B,MAAM;QACN,QAAQ;QACR,MAAM;QACN,YAAY,EAAE,mBAAmB,CAAC,WAAW,CAAC;KAC/C,CAAC,CAAC;IACH,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC;IAEjC,MAAM,QAAQ,GAAG,iBAAiB,CAAC;QACjC,MAAM;QACN,QAAQ;QACR,SAAS;QACT,KAAK;QACL,UAAU;QACV,WAAW;QACX,UAAU,EAAE,UAAU,CAAC,WAAW;QAClC,MAAM;KACP,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC,aAAa,KAAK,MAAM,CAAC;IAC1G,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,YAAY;YAAE,UAAU,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/C,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,4BAAG,SAAS,GAAI,CAAC;IAE3C,kDAAkD;IAClD,mCAAmC;IACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChG,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,CAAC,CAAC,eAAM,KAAK,EAAE,KAAK,YAAG,IAAI,GAAQ,CAAC,CAAC,CAAC,4BAAG,IAAI,GAAI,CAAC;AACjE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"BizSelect.d.ts","sourceRoot":"","sources":["../../src/biz-select/BizSelect.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAa,cAAc,EAAyB,MAAM,SAAS,CAAC;AAIhF,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BAmH9C"}
1
+ {"version":3,"file":"BizSelect.d.ts","sourceRoot":"","sources":["../../src/biz-select/BizSelect.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAa,cAAc,EAA0B,MAAM,SAAS,CAAC;AAIjF,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BAmH9C"}
@@ -11,14 +11,14 @@ import { normalizeSource } from './normalize.js';
11
11
  import { resolveSelectSource } from './registry.js';
12
12
  import { useCandidates } from './useCandidates.js';
13
13
  import { useSelectedLabel } from './useSelectedLabel.js';
14
- import { buildObjectValue, defaultSearchFields, readCode, readObjectName, toAntOption, } from './format.js';
14
+ import { buildObjectValue, defaultSearchFields, readObjectLabel, readValue, toAntOption, } from './format.js';
15
15
  const DEFAULT_BLOCKED_TEXT = '请先选择上级';
16
16
  export function BizSelect(props) {
17
17
  const { source, params, displayMode = 'L', searchFields, seedOptions, debounceMs, cacheKey, blockedText = DEFAULT_BLOCKED_TEXT, valueMode = 'primitive', valueFields, value, onChange, disabled, placeholder, ...rest } = props;
18
18
  const sourceObj = resolveSelectSource(source);
19
19
  const fields = searchFields ?? defaultSearchFields(displayMode);
20
- const code = readCode(value, valueMode, valueFields);
21
- const valueName = readObjectName(value, valueMode, valueFields);
20
+ const code = readValue(value, valueMode, valueFields);
21
+ const valueName = readObjectLabel(value, valueMode, valueFields);
22
22
  // 源直接交给 Hook:解析与来源键(含版本订阅)都在里面,组件不再自己算一份
23
23
  const candidates = useCandidates({
24
24
  source,
@@ -40,7 +40,7 @@ export function BizSelect(props) {
40
40
  });
41
41
  // 只有 load 型需要为了回显提前拉一次全集:它没有 resolve,名称只能从全集里找。
42
42
  // 对象值自带名称、seed 已命中时不用拉。
43
- const hasKnownName = Boolean(valueName) || Boolean(seedOptions?.some((item) => item.code === code));
43
+ const hasKnownName = Boolean(valueName) || Boolean(seedOptions?.some((item) => item.value === code));
44
44
  const needEchoLoad = code !== undefined && !hasKnownName && normalizeSource(sourceObj).candidateMode === 'load';
45
45
  useEffect(() => {
46
46
  if (needEchoLoad)
@@ -56,7 +56,7 @@ export function BizSelect(props) {
56
56
  if (searching || candidates.error)
57
57
  return list;
58
58
  const selectedOption = selected.option;
59
- if (selectedOption && !list.some((item) => item.value === selectedOption.code)) {
59
+ if (selectedOption && !list.some((item) => item.value === selectedOption.value)) {
60
60
  list.unshift(toAntOption(selectedOption, displayMode));
61
61
  }
62
62
  return list;
@@ -1 +1 @@
1
- {"version":3,"file":"BizSelect.js","sourceRoot":"","sources":["../../src/biz-select/BizSelect.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BizSelect.js","sourceRoot":"","sources":["../../src/biz-select/BizSelect.tsx"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
6
6
  * 不该为了显示一个名称付出一个交互组件的代价。
7
7
  */
8
8
  import { useEffect } from 'react';
9
- import { EMPTY, defaultSearchFields, formatLabel, readCode, readObjectName } from './format.js';
9
+ import { EMPTY, defaultSearchFields, formatLabel, readObjectLabel, readValue } from './format.js';
10
10
  import { normalizeSource } from './normalize.js';
11
11
  import { resolveSelectSource } from './registry.js';
12
12
  import { useCandidates } from './useCandidates.js';
@@ -14,15 +14,15 @@ import { useSelectedLabel } from './useSelectedLabel.js';
14
14
  /** 状态说明挂在 title 上:用户不能把「没查到」误认为「业务值为空」 */
15
15
  const STATUS_TITLE = {
16
16
  loading: '正在解析名称',
17
- missing: '未找到对应名称,显示原始编码',
17
+ missing: '未找到对应名称,显示原始值',
18
18
  blocked: '缺少必需参数,未解析名称',
19
- error: '名称解析失败,显示原始编码',
19
+ error: '名称解析失败,显示原始值',
20
20
  };
21
21
  export function BizSelectDisplay(props) {
22
22
  const { source, params, displayMode = 'L', seedOptions, cacheKey, emptyText = EMPTY, valueMode = 'primitive', valueFields, value, } = props;
23
23
  const sourceObj = resolveSelectSource(source);
24
- const code = readCode(value, valueMode, valueFields);
25
- const valueName = readObjectName(value, valueMode, valueFields);
24
+ const code = readValue(value, valueMode, valueFields);
25
+ const valueName = readObjectLabel(value, valueMode, valueFields);
26
26
  // 只有 load 型需要为回显拉一次全集:它没有 resolve,名称只能从全集里找
27
27
  const candidates = useCandidates({
28
28
  source,
@@ -32,7 +32,7 @@ export function BizSelectDisplay(props) {
32
32
  });
33
33
  const { sourceKey } = candidates;
34
34
  // 对象值自带名称、seed 已命中时不用为了回显拉全集
35
- const hasKnownName = Boolean(valueName) || Boolean(seedOptions?.some((item) => item.code === code));
35
+ const hasKnownName = Boolean(valueName) || Boolean(seedOptions?.some((item) => item.value === code));
36
36
  const needEchoLoad = code !== undefined && !hasKnownName && normalizeSource(sourceObj).candidateMode === 'load';
37
37
  useEffect(() => {
38
38
  if (needEchoLoad)
@@ -1 +1 @@
1
- {"version":3,"file":"BizSelectDisplay.js","sourceRoot":"","sources":["../../src/biz-select/BizSelectDisplay.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,0CAA0C;AAC1C,MAAM,YAAY,GAA4C;IAC5D,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,gBAAgB;IACzB,OAAO,EAAE,cAAc;IACvB,KAAK,EAAE,eAAe;CACvB,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,EACJ,MAAM,EACN,MAAM,EACN,WAAW,GAAG,GAAG,EACjB,WAAW,EACX,QAAQ,EACR,SAAS,GAAG,KAAK,EACjB,SAAS,GAAG,WAAW,EACvB,WAAW,EACX,KAAK,GACN,GAAG,KAAK,CAAC;IAEV,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAEhE,4CAA4C;IAC5C,MAAM,UAAU,GAAG,aAAa,CAAC;QAC/B,MAAM;QACN,QAAQ;QACR,MAAM;QACN,YAAY,EAAE,mBAAmB,CAAC,WAAW,CAAC;KAC/C,CAAC,CAAC;IACH,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC;IACjC,6BAA6B;IAC7B,MAAM,YAAY,GAChB,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;IACjF,MAAM,YAAY,GAChB,IAAI,KAAK,SAAS,IAAI,CAAC,YAAY,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC,aAAa,KAAK,MAAM,CAAC;IAC7F,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,YAAY;YAAE,UAAU,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/C,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC;QAC1C,MAAM,EAAE,SAAS;QACjB,SAAS;QACT,IAAI;QACJ,SAAS;QACT,WAAW;QACX,UAAU,EAAE,UAAU,CAAC,WAAW;QAClC,MAAM;KACP,CAAC,CAAC;IAEH,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,MAAM;QAAE,OAAO,4BAAG,SAAS,GAAI,CAAC;IAE3D,kDAAkD;IAClD,8CAA8C;IAC9C,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,CAAC,CAAC,eAAM,KAAK,EAAE,KAAK,YAAG,IAAI,GAAQ,CAAC,CAAC,CAAC,4BAAG,IAAI,GAAI,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"BizSelectDisplay.js","sourceRoot":"","sources":["../../src/biz-select/BizSelectDisplay.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,0CAA0C;AAC1C,MAAM,YAAY,GAA4C;IAC5D,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,cAAc;IACvB,KAAK,EAAE,cAAc;CACtB,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,EACJ,MAAM,EACN,MAAM,EACN,WAAW,GAAG,GAAG,EACjB,WAAW,EACX,QAAQ,EACR,SAAS,GAAG,KAAK,EACjB,SAAS,GAAG,WAAW,EACvB,WAAW,EACX,KAAK,GACN,GAAG,KAAK,CAAC;IAEV,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAEjE,4CAA4C;IAC5C,MAAM,UAAU,GAAG,aAAa,CAAC;QAC/B,MAAM;QACN,QAAQ;QACR,MAAM;QACN,YAAY,EAAE,mBAAmB,CAAC,WAAW,CAAC;KAC/C,CAAC,CAAC;IACH,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC;IACjC,6BAA6B;IAC7B,MAAM,YAAY,GAChB,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;IAClF,MAAM,YAAY,GAChB,IAAI,KAAK,SAAS,IAAI,CAAC,YAAY,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC,aAAa,KAAK,MAAM,CAAC;IAC7F,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,YAAY;YAAE,UAAU,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/C,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC;QAC1C,MAAM,EAAE,SAAS;QACjB,SAAS;QACT,IAAI;QACJ,SAAS;QACT,WAAW;QACX,UAAU,EAAE,UAAU,CAAC,WAAW;QAClC,MAAM;KACP,CAAC,CAAC;IAEH,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,MAAM;QAAE,OAAO,4BAAG,SAAS,GAAI,CAAC;IAE3D,kDAAkD;IAClD,8CAA8C;IAC9C,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,CAAC,CAAC,eAAM,KAAK,EAAE,KAAK,YAAG,IAAI,GAAQ,CAAC,CAAC,CAAC,4BAAG,IAAI,GAAI,CAAC;AACjE,CAAC"}
@@ -9,6 +9,13 @@ import type { BizOption } from './types.js';
9
9
  export declare function loadCandidatesWithCache(key: string, loader: () => Promise<BizOption[]>): Promise<BizOption[]>;
10
10
  /** 丢掉单条候选缓存:reload() 要真正重取,不能又命中同一份 */
11
11
  export declare function dropCandidateCache(key: string): void;
12
+ /**
13
+ * 只看缓存、不发起请求:批量解析用它先把已命中的挑出来,
14
+ * 免得已经查过的编码还被塞进批量请求里占位。
15
+ */
16
+ export declare function peekResolved(key: string): Promise<BizOption | null> | undefined;
17
+ /** 丢掉单条解析缓存:`reload()` 要真正重查,不能又命中同一份 */
18
+ export declare function dropResolvedCache(key: string): void;
12
19
  export declare function resolveCodeWithCache(key: string, loader: () => Promise<BizOption | null>): Promise<BizOption | null>;
13
20
  export declare function clearSelectCacheOfSource(sourceKey: string): void;
14
21
  export declare function clearSelectCache(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/biz-select/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AA2FzC,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,GACjC,OAAO,CAAC,SAAS,EAAE,CAAC,CA2BtB;AAED,uCAAuC;AACvC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GACtC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAgB3B;AAOD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAQhE;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/biz-select/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AA2FzC,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,GACjC,OAAO,CAAC,SAAS,EAAE,CAAC,CA2BtB;AAED,uCAAuC;AACvC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,SAAS,CAE/E;AAED,yCAAyC;AACzC,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GACtC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAgB3B;AAOD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAQhE;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C"}
@@ -87,6 +87,17 @@ export function loadCandidatesWithCache(key, loader) {
87
87
  export function dropCandidateCache(key) {
88
88
  candidateCache.delete(key);
89
89
  }
90
+ /**
91
+ * 只看缓存、不发起请求:批量解析用它先把已命中的挑出来,
92
+ * 免得已经查过的编码还被塞进批量请求里占位。
93
+ */
94
+ export function peekResolved(key) {
95
+ return take(resolveCache, key);
96
+ }
97
+ /** 丢掉单条解析缓存:`reload()` 要真正重查,不能又命中同一份 */
98
+ export function dropResolvedCache(key) {
99
+ resolveCache.delete(key);
100
+ }
90
101
  export function resolveCodeWithCache(key, loader) {
91
102
  const cached = take(resolveCache, key);
92
103
  if (cached)
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/biz-select/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/biz-select/cache.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,22 @@
1
1
  import type { AnyFormFieldSchema, NamePath } from '../types.js';
2
2
  import type { BizOption, DisplayMode, SearchFields, ValueFieldMap, ValueMode } from './types.js';
3
+ /**
4
+ * `paramsFrom` 的两种写法,别的不认:
5
+ * - `NamePath`:字段值原样当参数
6
+ * - `{ from, pick }`:字段值是对象时取其中一个键当参数。
7
+ * 给「接口平铺 userId/userName、前端临时组装成 user 对象」这类场景用;
8
+ * 只声明键名,不做「看到对象就猜该取哪个键」的自动推导。
9
+ */
10
+ export type ParamsFromEntry = NamePath | {
11
+ from: NamePath;
12
+ pick: string;
13
+ };
3
14
  /** BizSelect 在 schema 里额外认的专有属性 */
4
15
  export interface BizSelectSchemaProps {
5
16
  /** 数据源注册名;schema 里不允许写函数 */
6
17
  source?: string;
7
- /** 参数名 ← 表单字段名:`{ provinceCode: 'provinceCode' }` */
8
- paramsFrom?: Record<string, NamePath>;
18
+ /** 参数名 ← 表单字段名(或字段值里的某个键):`{ provinceCode: 'provinceCode' }` */
19
+ paramsFrom?: Record<string, ParamsFromEntry>;
9
20
  valueMode?: ValueMode;
10
21
  valueFields?: ValueFieldMap;
11
22
  displayMode?: DisplayMode;
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/biz-select/compile.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,kBAAkB,EAIlB,QAAQ,EAET,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,YAAY,EAEZ,aAAa,EACb,SAAS,EACV,MAAM,SAAS,CAAC;AAEjB,mCAAmC;AACnC,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC;IAC1B,yBAAyB;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAwDD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,kBAAkB,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CA0BnF"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/biz-select/compile.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,kBAAkB,EAIlB,QAAQ,EAET,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,YAAY,EAEZ,aAAa,EACb,SAAS,EACV,MAAM,SAAS,CAAC;AAEjB;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,mCAAmC;AACnC,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC;IAC1B,yBAAyB;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAgFD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,kBAAkB,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CA2BnF"}
@@ -15,13 +15,33 @@ const SUNK_KEYS = [
15
15
  'blockedText',
16
16
  'debounceMs',
17
17
  ];
18
+ function isPickEntry(entry) {
19
+ return typeof entry === 'object' && entry !== null && !Array.isArray(entry);
20
+ }
21
+ /**
22
+ * 取参数值。
23
+ *
24
+ * `pick` 取不到(父值为空、不是对象、没这个键)一律给 `undefined`,
25
+ * 交给下游的 `requiredParams` 去挡请求——这里不能回退成整个对象,
26
+ * 把对象当参数传给后端是静默错误,比不查难查得多。
27
+ */
28
+ function readParam(entry, ctx) {
29
+ if (!isPickEntry(entry))
30
+ return ctx.get(entry);
31
+ const value = ctx.get(entry.from);
32
+ if (!value || typeof value !== 'object')
33
+ return undefined;
34
+ return value[entry.pick];
35
+ }
18
36
  /**
19
37
  * 把 `paramsFrom` 编译成已有的两套机制:
20
38
  * - `dynamic`:订阅父字段,把值映射成 `params` 传给组件
21
39
  * - `linkage`:父值变化时清空本字段
22
40
  */
23
41
  function compileParamsFrom(schema, entries) {
24
- const deps = dedupeNamePaths(entries.map(([, path]) => path));
42
+ // 依赖必须挂在 from 上:linkage 的清空匹配用的是一级字段名,
43
+ // 写成 ['user','userId'] 这种子路径,父值变化时不会触发清空
44
+ const deps = dedupeNamePaths(entries.map(([, entry]) => (isPickEntry(entry) ? entry.from : entry)));
25
45
  const base = schema.dynamic;
26
46
  const inheritedProps = base?.props;
27
47
  // 静态固定条件(如 props.params: { enabled: true })必须保留,否则查询会放宽
@@ -33,7 +53,7 @@ function compileParamsFrom(schema, entries) {
33
53
  props: (ctx) => {
34
54
  const inherited = typeof inheritedProps === 'function' ? inheritedProps(ctx) : (inheritedProps ?? {});
35
55
  const inheritedParams = inherited.params;
36
- const mapped = Object.fromEntries(entries.map(([param, path]) => [param, ctx.get(path)]));
56
+ const mapped = Object.fromEntries(entries.map(([param, entry]) => [param, readParam(entry, ctx)]));
37
57
  // 合并顺序:静态 props.params < dynamic.props().params < paramsFrom 映射。
38
58
  // 越靠后的越"当前",同名时覆盖前面的
39
59
  return {
@@ -55,7 +75,8 @@ function compileParamsFrom(schema, entries) {
55
75
  */
56
76
  export function normalizeBizSelectSchema(schema) {
57
77
  const ext = schema;
58
- if (ext.type !== 'BizSelect')
78
+ // 单选多选共用同一套:级联参数和清空语义与值的形态无关
79
+ if (ext.type !== 'BizSelect' && ext.type !== 'BizMultiSelect')
59
80
  return schema;
60
81
  const sunk = {};
61
82
  for (const key of SUNK_KEYS) {
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/biz-select/compile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/biz-select/compile.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,32 @@
1
+ import type { BizOption, RecordFieldNames, SelectParams, SelectSource, SelectValue } from './types.js';
1
2
  /**
2
- * 三个工厂:只做形状收敛,不注册、不缓存、不发请求。
3
- *
4
- * 之所以保留工厂而不是让调用方直接写 `{ load, search }`:
5
- * 工厂承载了「这个源属于哪种能力组合」的语义,写法越短,越不容易写出
6
- * `resolve` 用模糊搜索冒充精确查这类错误。
3
+ * 源返回的原始记录:字段名由 recordFields 声明。
4
+ * 刻意不收窄成 `Record<string, unknown>`——业务侧传的是 interface,
5
+ * 没有索引签名就赋不进来;形状对不对由 recordFields 声明负责,类型系统管不到这一步。
7
6
  */
8
- import type { BizOption, SelectCode, SelectSource, SelectParams } from './types.js';
7
+ type OptionRecord = object;
9
8
  /** ① 纯前端常量:同步可用,没有请求也没有 loading */
10
- export declare function staticList<T = unknown>(list: ReadonlyArray<BizOption<T>>): SelectSource;
9
+ export declare function staticList(list: ReadonlyArray<BizOption | OptionRecord>, recordFields?: RecordFieldNames): SelectSource;
10
+ export interface LoadedOptions {
11
+ requiredParams?: string[];
12
+ namespace?: () => string;
13
+ recordFields?: RecordFieldNames;
14
+ }
11
15
  /**
12
16
  * ② 有限远程枚举:一次拉全量,之后由前端过滤。
13
17
  * 传导入的函数(如 `api.listCurrency`)而不是内联箭头,才能跨实例共享缓存。
14
18
  */
15
- export declare function loaded<P extends SelectParams = SelectParams>(load: (params: P, signal?: AbortSignal) => Promise<BizOption[]>, extra?: Pick<SelectSource<P>, 'requiredParams' | 'namespace'>): SelectSource<P>;
16
- /** ③ 无限远程:关键词搜索 + 按编码回显 */
17
- export declare function remote<P extends SelectParams = SelectParams>(config: {
18
- search: (keyword: string, params: P, signal?: AbortSignal) => Promise<BizOption[]>;
19
- resolve?: (code: SelectCode, params: P, signal?: AbortSignal) => Promise<BizOption | null>;
19
+ export declare function loaded<P extends SelectParams = SelectParams>(load: (params: P, signal?: AbortSignal) => Promise<Array<BizOption | OptionRecord>>, options?: LoadedOptions): SelectSource<P>;
20
+ export interface RemoteOptions<P extends SelectParams = SelectParams> {
21
+ search: (keyword: string, params: P, signal?: AbortSignal) => Promise<Array<BizOption | OptionRecord>>;
22
+ resolve?: (value: SelectValue, params: P, signal?: AbortSignal) => Promise<BizOption | OptionRecord | null>;
23
+ /** 批量按值查:接口有 IN 参数时才声明,见 SelectSource.resolveMany */
24
+ resolveMany?: (values: SelectValue[], params: P, signal?: AbortSignal) => Promise<Array<BizOption | OptionRecord>>;
20
25
  requiredParams?: string[];
21
26
  namespace?: () => string;
22
- }): SelectSource<P>;
27
+ recordFields?: RecordFieldNames;
28
+ }
29
+ /** ③ 无限远程:关键词搜索 + 按值回显 */
30
+ export declare function remote<P extends SelectParams = SelectParams>(config: RemoteOptions<P>): SelectSource<P>;
31
+ export {};
23
32
  //# sourceMappingURL=factories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../src/biz-select/factories.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEjF,mCAAmC;AACnC,wBAAgB,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAEvF;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAC1D,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,EAC/D,KAAK,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,gBAAgB,GAAG,WAAW,CAAC,GAC5D,YAAY,CAAC,CAAC,CAAC,CAEjB;AAED,2BAA2B;AAC3B,wBAAgB,MAAM,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,MAAM,EAAE;IACpE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACnF,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC3F,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;CAC1B,GAAG,YAAY,CAAC,CAAC,CAAC,CAGlB"}
1
+ {"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../src/biz-select/factories.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,KAAK,YAAY,GAAG,MAAM,CAAC;AAuC3B,mCAAmC;AACnC,wBAAgB,UAAU,CACxB,IAAI,EAAE,aAAa,CAAC,SAAS,GAAG,YAAY,CAAC,EAC7C,YAAY,CAAC,EAAE,gBAAgB,GAC9B,YAAY,CAEd;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAC1D,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC,CAAC,EACnF,OAAO,GAAE,aAAkB,GAC1B,YAAY,CAAC,CAAC,CAAC,CAGjB;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IAClE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC;IACvG,OAAO,CAAC,EAAE,CACR,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,CAAC,EACT,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,SAAS,GAAG,YAAY,GAAG,IAAI,CAAC,CAAC;IAC9C,qDAAqD;IACrD,WAAW,CAAC,EAAE,CACZ,MAAM,EAAE,WAAW,EAAE,EACrB,MAAM,EAAE,CAAC,EACT,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC;IAC9C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAED,0BAA0B;AAC1B,wBAAgB,MAAM,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAC1D,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GACvB,YAAY,CAAC,CAAC,CAAC,CAWjB"}