@openli1115/lowcode-edit-pro-table 1.0.54 → 1.0.55

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 (62) hide show
  1. package/build/docs/404.html +3 -3
  2. package/build/docs/_demos/:uuid +3 -3
  3. package/build/docs/colorful-button.html +3 -3
  4. package/build/docs/colorful-input.html +3 -3
  5. package/build/docs/index.html +3 -3
  6. package/build/docs/umi.f54e4184.js +1 -0
  7. package/build/docs/~demos/:uuid.html +3 -3
  8. package/build/docs/~demos/colorful-button-demo.html +3 -3
  9. package/build/docs/~demos/colorful-input-demo.html +3 -3
  10. package/build/lowcode/assets-daily.json +13 -13
  11. package/build/lowcode/assets-dev.json +2 -2
  12. package/build/lowcode/assets-prod.json +13 -13
  13. package/build/lowcode/meta.design.js +1 -1
  14. package/build/lowcode/meta.js +1 -1
  15. package/build/lowcode/render/default/view.js +2 -2
  16. package/build/lowcode/view.js +2 -2
  17. package/dist/BizComps.js +7 -7
  18. package/dist/BizComps.js.map +1 -1
  19. package/es/components/ProCascaderSelect/index.js +29 -32
  20. package/es/components/ProCheckbox/index.d.ts +1 -9
  21. package/es/components/ProCheckbox/index.js +27 -40
  22. package/es/components/ProDatePicker/index.js +23 -29
  23. package/es/components/ProInput/index.d.ts +0 -3
  24. package/es/components/ProInput/index.js +23 -44
  25. package/es/components/ProRadio/index.d.ts +1 -9
  26. package/es/components/ProRadio/index.js +26 -40
  27. package/es/components/ProSelect/index.js +27 -32
  28. package/es/components/ProTextArea/index.d.ts +2 -2
  29. package/es/components/ProTextArea/index.js +23 -29
  30. package/es/components/ProTimePicker/index.js +24 -33
  31. package/es/components/utils/index.d.ts +15 -1
  32. package/es/components/utils/index.js +39 -9
  33. package/es/context/useComponentContext.d.ts +3 -1
  34. package/es/context/useComponentContext.js +17 -17
  35. package/es/context/useProBoundValue.d.ts +6 -0
  36. package/es/context/useProBoundValue.js +34 -0
  37. package/es/index.d.ts +2 -1
  38. package/es/index.js +2 -1
  39. package/lib/components/ProCascaderSelect/index.js +28 -31
  40. package/lib/components/ProCheckbox/index.d.ts +1 -9
  41. package/lib/components/ProCheckbox/index.js +26 -39
  42. package/lib/components/ProDatePicker/index.js +22 -28
  43. package/lib/components/ProInput/index.d.ts +0 -3
  44. package/lib/components/ProInput/index.js +22 -43
  45. package/lib/components/ProRadio/index.d.ts +1 -9
  46. package/lib/components/ProRadio/index.js +25 -39
  47. package/lib/components/ProSelect/index.js +26 -31
  48. package/lib/components/ProTextArea/index.d.ts +2 -2
  49. package/lib/components/ProTextArea/index.js +22 -28
  50. package/lib/components/ProTimePicker/index.js +23 -32
  51. package/lib/components/utils/index.d.ts +15 -1
  52. package/lib/components/utils/index.js +40 -10
  53. package/lib/context/useComponentContext.d.ts +3 -1
  54. package/lib/context/useComponentContext.js +18 -18
  55. package/lib/context/useProBoundValue.d.ts +6 -0
  56. package/lib/context/useProBoundValue.js +39 -0
  57. package/lib/index.d.ts +2 -1
  58. package/lib/index.js +5 -2
  59. package/lowcode_es/meta.js +1 -1
  60. package/lowcode_lib/meta.js +1 -1
  61. package/package.json +3 -3
  62. package/build/docs/umi.6ff0a30e.js +0 -1
@@ -1,14 +1,6 @@
1
1
  import { Radio } from '@alifd/next';
2
2
  /**
3
- * ProRadio
4
- * @description 单选按钮组
5
- * @param {string} defaultValue 默认值(radio.group才有的字段)
6
- * @param {string} screen_structure_field 屏幕结构字段
7
- * @param {string} screen_inner_id 屏幕内部id
8
- * @param {string} screen_structure 屏幕结构
9
- * @param {string} dataSource 数据源
10
- * @param {string} checkedValue 选中值
11
- * @param {string} checked 默认选中
3
+ * ProRadio — 单选按钮组
12
4
  */
13
5
  declare const ProRadio: typeof Radio;
14
6
  export default ProRadio;
@@ -5,26 +5,12 @@ exports.__esModule = true;
5
5
  exports["default"] = void 0;
6
6
  var _radio = _interopRequireDefault(require("@alifd/next/lib/radio"));
7
7
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
8
  var _utils = require("../utils");
10
- var _useComponentContext2 = require("../../context/useComponentContext");
11
- var _excluded = ["dataSource", "screen_structure", "screen_structure_field", "screen_inner_id", "range_inner_table", "defaultValue", "disableEdit"];
12
- var React = window.React;
13
- var createElement = React.createElement,
14
- useEffect = React.useEffect,
15
- useRef = React.useRef,
16
- useState = React.useState;
9
+ var _useProBoundValue2 = require("../../context/useProBoundValue");
10
+ var createElement = window.React.createElement;
17
11
 
18
12
  /**
19
- * ProRadio
20
- * @description 单选按钮组
21
- * @param {string} defaultValue 默认值(radio.group才有的字段)
22
- * @param {string} screen_structure_field 屏幕结构字段
23
- * @param {string} screen_inner_id 屏幕内部id
24
- * @param {string} screen_structure 屏幕结构
25
- * @param {string} dataSource 数据源
26
- * @param {string} checkedValue 选中值
27
- * @param {string} checked 默认选中
13
+ * ProRadio — 单选按钮组
28
14
  */
29
15
  var ProRadio = function ProRadio(props) {
30
16
  var dataSource = props.dataSource,
@@ -32,35 +18,35 @@ var ProRadio = function ProRadio(props) {
32
18
  screen_structure_field = props.screen_structure_field,
33
19
  screen_inner_id = props.screen_inner_id,
34
20
  range_inner_table = props.range_inner_table,
35
- defaultValue = props.defaultValue,
36
21
  disableEdit = props.disableEdit,
37
- otherProps = (0, _objectWithoutPropertiesLoose2["default"])(props, _excluded);
38
- var _getFormBindingPath = (0, _utils.getFormBindingPath)(screen_structure, screen_structure_field, range_inner_table),
39
- structureName = _getFormBindingPath.structureName,
40
- structureField = _getFormBindingPath.structureField;
41
- var fieldPath = structureName + "." + structureField;
42
- var _useComponentContext = (0, _useComponentContext2.useComponentContext)(fieldPath),
43
- value = _useComponentContext.value,
44
- onValueChange = _useComponentContext.onValueChange;
45
- console.log('ProRadio useComponentContext value', value, fieldPath);
46
- // console.log('otherProps', otherProps);
47
-
22
+ readOnlyProp = props.readOnly,
23
+ disabledProp = props.disabled,
24
+ _v = props.value,
25
+ schemaOnChange = props.onChange,
26
+ defaultValue = props.defaultValue;
27
+ var _resolveProScreenBind = (0, _utils.resolveProScreenBinding)({
28
+ screen_structure: screen_structure,
29
+ screen_structure_field: screen_structure_field,
30
+ range_inner_table: range_inner_table
31
+ }),
32
+ structureName = _resolveProScreenBind.structureName,
33
+ structureField = _resolveProScreenBind.structureField,
34
+ fieldPath = _resolveProScreenBind.fieldPath;
35
+ var _useProBoundValue = (0, _useProBoundValue2.useProBoundValue)(fieldPath, defaultValue, ''),
36
+ value = _useProBoundValue.value,
37
+ commit = _useProBoundValue.commit;
48
38
  var handleChange = function handleChange(newValue) {
49
- // updateScreenStructure(screen_structure, screen_structure_field, value);
50
- if (onValueChange) {
51
- onValueChange(newValue);
52
- }
53
- // 触发标准 onChange
54
- if (props.onChange) {
55
- props.onChange(newValue, structureName, structureField);
56
- }
39
+ commit(newValue);
40
+ schemaOnChange === null || schemaOnChange === void 0 ? void 0 : schemaOnChange(newValue, structureName, structureField);
57
41
  };
58
42
  return /*#__PURE__*/React.createElement("span", {
59
43
  className: "field-wrapper " + (disableEdit ? 'disable-edit' : 'enable-edit')
60
44
  }, /*#__PURE__*/React.createElement(_radio["default"].Group, (0, _extends2["default"])({}, props, {
45
+ readOnly: disableEdit ? true : readOnlyProp,
46
+ disabled: disabledProp,
47
+ dataSource: dataSource,
61
48
  value: value,
62
- onChange: handleChange,
63
- dataSource: dataSource
49
+ onChange: handleChange
64
50
  })));
65
51
  };
66
52
  var _default = exports["default"] = ProRadio;
@@ -5,50 +5,45 @@ exports.__esModule = true;
5
5
  exports["default"] = void 0;
6
6
  var _select = _interopRequireDefault(require("@alifd/next/lib/select"));
7
7
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
8
  var _utils = require("../utils");
10
- var _useComponentContext2 = require("../../context/useComponentContext");
11
- var _excluded = ["dataSource", "screen_structure", "screen_structure_field", "screen_inner_id", "range_inner_table", "defaultValue", "disableEdit"];
12
- var React = window.React;
13
- var createElement = React.createElement,
14
- useEffect = React.useEffect,
15
- useRef = React.useRef,
16
- useState = React.useState;
9
+ var _useProBoundValue2 = require("../../context/useProBoundValue");
10
+ var createElement = window.React.createElement;
17
11
  var ProSelect = function ProSelect(props) {
18
12
  var dataSource = props.dataSource,
19
13
  screen_structure = props.screen_structure,
20
14
  screen_structure_field = props.screen_structure_field,
21
15
  screen_inner_id = props.screen_inner_id,
22
16
  range_inner_table = props.range_inner_table,
23
- defaultValue = props.defaultValue,
24
17
  disableEdit = props.disableEdit,
25
- otherProps = (0, _objectWithoutPropertiesLoose2["default"])(props, _excluded);
26
- var _getFormBindingPath = (0, _utils.getFormBindingPath)(screen_structure, screen_structure_field, range_inner_table),
27
- structureName = _getFormBindingPath.structureName,
28
- structureField = _getFormBindingPath.structureField;
29
- var fieldPath = structureName + "." + structureField;
30
- var _useComponentContext = (0, _useComponentContext2.useComponentContext)(fieldPath),
31
- value = _useComponentContext.value,
32
- onValueChange = _useComponentContext.onValueChange;
33
- console.log('ProSelect useComponentContext value', value, fieldPath);
34
- // console.log('otherProps', otherProps);
35
-
18
+ readOnlyProp = props.readOnly,
19
+ disabledProp = props.disabled,
20
+ _v = props.value,
21
+ schemaOnChange = props.onChange,
22
+ defaultValue = props.defaultValue;
23
+ var _resolveProScreenBind = (0, _utils.resolveProScreenBinding)({
24
+ screen_structure: screen_structure,
25
+ screen_structure_field: screen_structure_field,
26
+ range_inner_table: range_inner_table
27
+ }),
28
+ structureName = _resolveProScreenBind.structureName,
29
+ structureField = _resolveProScreenBind.structureField,
30
+ fieldPath = _resolveProScreenBind.fieldPath;
31
+ var _useProBoundValue = (0, _useProBoundValue2.useProBoundValue)(fieldPath, defaultValue, undefined),
32
+ value = _useProBoundValue.value,
33
+ commit = _useProBoundValue.commit;
36
34
  var handleChange = function handleChange(newValue) {
37
- // updateScreenStructure(screen_structure, screen_structure_field, value);
38
- if (onValueChange) {
39
- onValueChange(newValue);
40
- }
41
- // 触发标准 onChange
42
- if (props.onChange) {
43
- props.onChange(newValue, structureName, structureField);
44
- }
35
+ commit(newValue);
36
+ schemaOnChange === null || schemaOnChange === void 0 ? void 0 : schemaOnChange(newValue, structureName, structureField);
45
37
  };
38
+ var displayValue = value === '' ? undefined : value;
46
39
  return /*#__PURE__*/React.createElement("span", {
47
40
  className: "field-wrapper " + (disableEdit ? 'disable-edit' : 'enable-edit')
48
41
  }, /*#__PURE__*/React.createElement(_select["default"], (0, _extends2["default"])({}, props, {
49
- value: value,
50
- onChange: handleChange,
51
- dataSource: dataSource
42
+ readOnly: disableEdit ? true : readOnlyProp,
43
+ disabled: disabledProp,
44
+ dataSource: dataSource,
45
+ value: displayValue,
46
+ onChange: handleChange
52
47
  })));
53
48
  };
54
49
  var _default = exports["default"] = ProSelect;
@@ -1,3 +1,3 @@
1
- import { Input as oringinalInput } from '@alifd/next';
2
- declare const ProTextArea: typeof oringinalInput;
1
+ import { Input as OriginalInput } from '@alifd/next';
2
+ declare const ProTextArea: typeof OriginalInput;
3
3
  export default ProTextArea;
@@ -5,46 +5,40 @@ exports.__esModule = true;
5
5
  exports["default"] = void 0;
6
6
  var _input = _interopRequireDefault(require("@alifd/next/lib/input"));
7
7
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
8
  var _utils = require("../utils");
10
- var _useComponentContext2 = require("../../context/useComponentContext");
11
- var _excluded = ["screen_structure", "screen_structure_field", "screen_inner_id", "range_inner_table", "defaultValue", "disableEdit"];
12
- var React = window.React;
13
- var createElement = React.createElement,
14
- useEffect = React.useEffect,
15
- useRef = React.useRef,
16
- useState = React.useState;
9
+ var _useProBoundValue2 = require("../../context/useProBoundValue");
10
+ var createElement = window.React.createElement;
17
11
  var ProTextArea = function ProTextArea(props) {
18
12
  var screen_structure = props.screen_structure,
19
13
  screen_structure_field = props.screen_structure_field,
20
14
  screen_inner_id = props.screen_inner_id,
21
15
  range_inner_table = props.range_inner_table,
22
- defaultValue = props.defaultValue,
23
16
  disableEdit = props.disableEdit,
24
- otherProps = (0, _objectWithoutPropertiesLoose2["default"])(props, _excluded);
25
- var _getFormBindingPath = (0, _utils.getFormBindingPath)(screen_structure, screen_structure_field, range_inner_table),
26
- structureName = _getFormBindingPath.structureName,
27
- structureField = _getFormBindingPath.structureField;
28
- var fieldPath = structureName + "." + structureField;
29
- var _useComponentContext = (0, _useComponentContext2.useComponentContext)(fieldPath),
30
- value = _useComponentContext.value,
31
- onValueChange = _useComponentContext.onValueChange;
32
- console.log('ProTextArea useComponentContext value', value, fieldPath);
33
- // console.log('otherProps', otherProps);
34
-
17
+ readOnlyProp = props.readOnly,
18
+ disabledProp = props.disabled,
19
+ _v = props.value,
20
+ schemaOnChange = props.onChange,
21
+ defaultValue = props.defaultValue;
22
+ var _resolveProScreenBind = (0, _utils.resolveProScreenBinding)({
23
+ screen_structure: screen_structure,
24
+ screen_structure_field: screen_structure_field,
25
+ range_inner_table: range_inner_table
26
+ }),
27
+ structureName = _resolveProScreenBind.structureName,
28
+ structureField = _resolveProScreenBind.structureField,
29
+ fieldPath = _resolveProScreenBind.fieldPath;
30
+ var _useProBoundValue = (0, _useProBoundValue2.useProBoundValue)(fieldPath, defaultValue != null ? String(defaultValue) : '', ''),
31
+ value = _useProBoundValue.value,
32
+ commit = _useProBoundValue.commit;
35
33
  var handleChange = function handleChange(newValue) {
36
- // updateScreenStructure(screen_structure, screen_structure_field, value);
37
- if (onValueChange) {
38
- onValueChange(newValue);
39
- }
40
- // 触发标准 onChange
41
- if (props.onChange) {
42
- props.onChange(newValue, structureName, structureField);
43
- }
34
+ commit(newValue);
35
+ schemaOnChange === null || schemaOnChange === void 0 ? void 0 : schemaOnChange(newValue, structureName, structureField);
44
36
  };
45
37
  return /*#__PURE__*/React.createElement("span", {
46
38
  className: "field-wrapper " + (disableEdit ? 'disable-edit' : 'enable-edit')
47
39
  }, /*#__PURE__*/React.createElement(_input["default"].TextArea, (0, _extends2["default"])({}, props, {
40
+ readOnly: disableEdit ? true : readOnlyProp,
41
+ disabled: disabledProp,
48
42
  value: value,
49
43
  onChange: handleChange
50
44
  })));
@@ -5,25 +5,15 @@ exports.__esModule = true;
5
5
  exports["default"] = void 0;
6
6
  var _timePicker = _interopRequireDefault(require("@alifd/next/lib/time-picker"));
7
7
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
8
  var _utils = require("../utils");
10
- var _useComponentContext2 = require("../../context/useComponentContext");
11
- var _excluded = ["screen_structure", "screen_structure_field", "screen_inner_id", "range_inner_table", "defaultValue", "disableEdit"];
12
- var React = window.React;
13
- var createElement = React.createElement,
14
- useEffect = React.useEffect,
15
- useRef = React.useRef,
16
- useState = React.useState;
9
+ var _useProBoundValue2 = require("../../context/useProBoundValue");
10
+ var createElement = window.React.createElement;
17
11
  var moment = window.moment;
18
-
19
- // 工具函数:Date 转字符串 "HH:mm:ss"
20
12
  function timeDateToString(date) {
21
13
  if (!date) return '';
22
14
  if (moment) {
23
- // 使用 moment 格式化
24
15
  return moment(date).format('HH:mm:ss');
25
16
  }
26
- // 降级方案
27
17
  var d = new Date(date);
28
18
  var h = String(d.getHours()).padStart(2, '0');
29
19
  var m = String(d.getMinutes()).padStart(2, '0');
@@ -35,32 +25,33 @@ var ProTimePicker = function ProTimePicker(props) {
35
25
  screen_structure_field = props.screen_structure_field,
36
26
  screen_inner_id = props.screen_inner_id,
37
27
  range_inner_table = props.range_inner_table,
38
- defaultValue = props.defaultValue,
39
28
  disableEdit = props.disableEdit,
40
- otherProps = (0, _objectWithoutPropertiesLoose2["default"])(props, _excluded);
41
- var _getFormBindingPath = (0, _utils.getFormBindingPath)(screen_structure, screen_structure_field, range_inner_table),
42
- structureName = _getFormBindingPath.structureName,
43
- structureField = _getFormBindingPath.structureField;
44
- var fieldPath = structureName + "." + structureField;
45
- var _useComponentContext = (0, _useComponentContext2.useComponentContext)(fieldPath),
46
- value = _useComponentContext.value,
47
- onValueChange = _useComponentContext.onValueChange;
48
- console.log('ProTimePicker useComponentContext value', value, fieldPath);
49
- // console.log('otherProps', otherProps);
50
-
29
+ readOnlyProp = props.readOnly,
30
+ disabledProp = props.disabled,
31
+ _v = props.value,
32
+ schemaOnChange = props.onChange,
33
+ defaultValue = props.defaultValue;
34
+ var _resolveProScreenBind = (0, _utils.resolveProScreenBinding)({
35
+ screen_structure: screen_structure,
36
+ screen_structure_field: screen_structure_field,
37
+ range_inner_table: range_inner_table
38
+ }),
39
+ structureName = _resolveProScreenBind.structureName,
40
+ structureField = _resolveProScreenBind.structureField,
41
+ fieldPath = _resolveProScreenBind.fieldPath;
42
+ var _useProBoundValue = (0, _useProBoundValue2.useProBoundValue)(fieldPath, defaultValue, ''),
43
+ value = _useProBoundValue.value,
44
+ commit = _useProBoundValue.commit;
51
45
  var handleChange = function handleChange(newValue) {
52
- // updateScreenStructure(screen_structure, screen_structure_field, value);
53
- if (onValueChange) {
54
- onValueChange(timeDateToString(newValue));
55
- }
56
- // 触发标准 onChange
57
- if (props.onChange) {
58
- props.onChange(timeDateToString(newValue), structureName, structureField);
59
- }
46
+ var str = timeDateToString(newValue);
47
+ commit(str);
48
+ schemaOnChange === null || schemaOnChange === void 0 ? void 0 : schemaOnChange(str, structureName, structureField);
60
49
  };
61
50
  return /*#__PURE__*/React.createElement("span", {
62
51
  className: "field-wrapper " + (disableEdit ? 'disable-edit' : 'enable-edit')
63
52
  }, /*#__PURE__*/React.createElement(_timePicker["default"], (0, _extends2["default"])({}, props, {
53
+ readOnly: disableEdit ? true : readOnlyProp,
54
+ disabled: disabledProp,
64
55
  value: value,
65
56
  onChange: handleChange
66
57
  })));
@@ -3,9 +3,23 @@ export declare const getStructureFieldName: (screen_structure: string, screen_st
3
3
  structureName: string;
4
4
  structureField: string;
5
5
  };
6
- /** 范围内表:表名来自 range_inner_table,字段名仍来自 screen_structure_field */
6
+ /**
7
+ * 屏幕结构:screen_structure + screen_structure_field。
8
+ * 范围内表:仅 range_inner_table;未选结构字段时默认绑定 low(内表行值)。
9
+ */
7
10
  export declare const getFormBindingPath: (screen_structure?: string, screen_structure_field?: string, range_inner_table?: string) => {
8
11
  structureName: string;
9
12
  structureField: string;
10
13
  };
14
+ /** 合法表单路径;缺省时为空串,避免 lodash path `'.'` 污染数据 */
15
+ export declare const getFormFieldPath: (screen_structure?: string, screen_structure_field?: string, range_inner_table?: string) => string;
16
+ export declare const resolveProScreenBinding: (props: {
17
+ screen_structure?: string;
18
+ screen_structure_field?: string;
19
+ range_inner_table?: string;
20
+ }) => {
21
+ structureName: string;
22
+ structureField: string;
23
+ fieldPath: string;
24
+ };
11
25
  export declare const baseUrl: string;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- exports.updateScreenStructure = exports.getStructureFieldName = exports.getFormBindingPath = exports.baseUrl = void 0;
4
+ exports.updateScreenStructure = exports.resolveProScreenBinding = exports.getStructureFieldName = exports.getFormFieldPath = exports.getFormBindingPath = exports.baseUrl = void 0;
5
5
  var updateScreenStructure = exports.updateScreenStructure = function updateScreenStructure(screen_structure, screen_structure_field, value, range_inner_table) {
6
6
  console.log('value', value);
7
7
  if (!screen_structure_field || typeof window === 'undefined' || !window.screenStructures) return;
@@ -34,17 +34,47 @@ var getStructureFieldName = exports.getStructureFieldName = function getStructur
34
34
  };
35
35
  };
36
36
 
37
- /** 范围内表:表名来自 range_inner_table,字段名仍来自 screen_structure_field */
37
+ /**
38
+ * 屏幕结构:screen_structure + screen_structure_field。
39
+ * 范围内表:仅 range_inner_table;未选结构字段时默认绑定 low(内表行值)。
40
+ */
38
41
  var getFormBindingPath = exports.getFormBindingPath = function getFormBindingPath(screen_structure, screen_structure_field, range_inner_table) {
39
42
  var rt = range_inner_table && String(range_inner_table).trim();
40
- if (rt && screen_structure_field) {
41
- var structureName = String(range_inner_table).split('__')[1] || '';
42
- var structureField = String(screen_structure_field).split('__')[1] || '';
43
- return {
44
- structureName: structureName,
45
- structureField: structureField
46
- };
43
+ var structureName = '';
44
+ var structureField = '';
45
+ if (rt) {
46
+ structureName = String(range_inner_table).split('__')[1] || '';
47
+ structureField = screen_structure_field ? String(screen_structure_field).split('__')[1] || '' : '';
48
+ if (structureName && !structureField) {
49
+ structureField = 'low';
50
+ }
51
+ } else {
52
+ var pair = getStructureFieldName(screen_structure || '', screen_structure_field || '');
53
+ structureName = pair.structureName || '';
54
+ structureField = pair.structureField || '';
47
55
  }
48
- return getStructureFieldName(screen_structure || '', screen_structure_field || '');
56
+ return {
57
+ structureName: structureName,
58
+ structureField: structureField
59
+ };
60
+ };
61
+
62
+ /** 合法表单路径;缺省时为空串,避免 lodash path `'.'` 污染数据 */
63
+ var getFormFieldPath = exports.getFormFieldPath = function getFormFieldPath(screen_structure, screen_structure_field, range_inner_table) {
64
+ var _getFormBindingPath = getFormBindingPath(screen_structure, screen_structure_field, range_inner_table),
65
+ structureName = _getFormBindingPath.structureName,
66
+ structureField = _getFormBindingPath.structureField;
67
+ return structureName && structureField ? structureName + "." + structureField : '';
68
+ };
69
+ var resolveProScreenBinding = exports.resolveProScreenBinding = function resolveProScreenBinding(props) {
70
+ var _getFormBindingPath2 = getFormBindingPath(props.screen_structure, props.screen_structure_field, props.range_inner_table),
71
+ structureName = _getFormBindingPath2.structureName,
72
+ structureField = _getFormBindingPath2.structureField;
73
+ var fieldPath = structureName && structureField ? structureName + "." + structureField : '';
74
+ return {
75
+ structureName: structureName,
76
+ structureField: structureField,
77
+ fieldPath: fieldPath
78
+ };
49
79
  };
50
80
  var baseUrl = exports.baseUrl = "https://" + window.location.hostname + ":18080/prod-api";
@@ -1,4 +1,6 @@
1
- export declare const useComponentContext: (path: string) => {
1
+ /** 级联等组件用稳定空数组,避免 deps 抖动 */
2
+ export declare const FORM_EMPTY_ARRAY: never[];
3
+ export declare const useComponentContext: (path: string, whenNull?: any) => {
2
4
  value: any;
3
5
  onValueChange: (newValue: any) => void;
4
6
  };
@@ -1,34 +1,34 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- exports.useComponentContext = void 0;
4
+ exports.useComponentContext = exports.FORM_EMPTY_ARRAY = void 0;
5
5
  var _react = require("react");
6
6
  var _lodash = require("lodash");
7
7
  var _FormProvider = require("./FormProvider");
8
8
  // useComponentContext.ts
9
9
 
10
10
  var FormContext = (0, _FormProvider.getFormContext)();
11
- var useComponentContext = exports.useComponentContext = function useComponentContext(path) {
12
- var formContext = (0, _react.useContext)(FormContext);
13
11
 
14
- // 使用 useMemo 缓存值
12
+ /** 级联等组件用稳定空数组,避免 deps 抖动 */
13
+ var FORM_EMPTY_ARRAY = exports.FORM_EMPTY_ARRAY = [];
14
+ var useComponentContext = exports.useComponentContext = function useComponentContext(path, whenNull) {
15
+ if (whenNull === void 0) {
16
+ whenNull = '';
17
+ }
18
+ var formContext = (0, _react.useContext)(FormContext);
19
+ var safePath = path && path !== '.' ? path : '';
15
20
  var value = (0, _react.useMemo)(function () {
16
- var _get;
17
- console.log("[useComponentContext] \u2705 initial value for '" + path + "':", formContext, value);
18
- if (!(formContext !== null && formContext !== void 0 && formContext.initialized)) return '';
19
- return (_get = (0, _lodash.get)(formContext.values, path)) !== null && _get !== void 0 ? _get : '';
20
- }, [formContext, path]);
21
-
22
- // 使用 useCallback 缓存 onValueChange
21
+ if (!safePath || !(formContext !== null && formContext !== void 0 && formContext.initialized)) return whenNull;
22
+ var v = (0, _lodash.get)(formContext.values, safePath);
23
+ if (v === undefined || v === null) return whenNull;
24
+ return v;
25
+ }, [formContext, safePath, whenNull]);
23
26
  var onValueChange = (0, _react.useCallback)(function (newValue) {
24
- if (!(formContext !== null && formContext !== void 0 && formContext.setFieldValue)) return;
25
- console.log("[useComponentContext] \uD83D\uDCDD onValueChange triggered for '" + path + "' -> new value:", newValue);
26
-
27
- // 检查值是否实际变化
28
- var currentValue = (0, _lodash.get)(formContext.values, path);
27
+ if (!safePath || !(formContext !== null && formContext !== void 0 && formContext.setFieldValue)) return;
28
+ var currentValue = (0, _lodash.get)(formContext.values, safePath);
29
29
  if (currentValue === newValue) return;
30
- formContext.setFieldValue(path, newValue);
31
- }, [formContext, path]);
30
+ formContext.setFieldValue(safePath, newValue);
31
+ }, [formContext, safePath]);
32
32
  return {
33
33
  value: value,
34
34
  onValueChange: onValueChange
@@ -0,0 +1,6 @@
1
+ /** contextWhenNull:绑定路径下值为 null/undefined 时的展示值(级联用 FORM_EMPTY_ARRAY,选择器用 undefined) */
2
+ export declare function useProBoundValue(fieldPath: string, unboundInitial: any, contextWhenNull?: any): {
3
+ value: any;
4
+ commit: (next: any) => void;
5
+ bound: boolean;
6
+ };
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.useProBoundValue = useProBoundValue;
5
+ var _useComponentContext2 = require("./useComponentContext");
6
+ // 表单上下文绑定 + 无路径时本地状态(与 ProInput 等行为一致)
7
+
8
+ var React = window.React;
9
+ var useCallback = React.useCallback,
10
+ useState = React.useState;
11
+
12
+ /** contextWhenNull:绑定路径下值为 null/undefined 时的展示值(级联用 FORM_EMPTY_ARRAY,选择器用 undefined) */
13
+ function useProBoundValue(fieldPath, unboundInitial, contextWhenNull) {
14
+ if (contextWhenNull === void 0) {
15
+ contextWhenNull = '';
16
+ }
17
+ var _useComponentContext = (0, _useComponentContext2.useComponentContext)(fieldPath, contextWhenNull),
18
+ ctxValue = _useComponentContext.value,
19
+ onValueChange = _useComponentContext.onValueChange;
20
+ var bound = Boolean(fieldPath);
21
+ var _useState = useState(function () {
22
+ return unboundInitial;
23
+ }),
24
+ localValue = _useState[0],
25
+ setLocalValue = _useState[1];
26
+ var value = bound ? ctxValue : localValue;
27
+ var commit = useCallback(function (next) {
28
+ if (bound) {
29
+ onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(next);
30
+ } else {
31
+ setLocalValue(next);
32
+ }
33
+ }, [bound, onValueChange]);
34
+ return {
35
+ value: value,
36
+ commit: commit,
37
+ bound: bound
38
+ };
39
+ }
package/lib/index.d.ts CHANGED
@@ -14,4 +14,5 @@ export { default as ProRadio } from './components/ProRadio';
14
14
  export { default as ProCascaderSelect } from './components/ProCascaderSelect';
15
15
  export { DatePicker, TimePicker } from 'antd';
16
16
  export { getFormContext, initializeFormContext, FormProvider } from './context/FormProvider';
17
- export { useComponentContext } from './context/useComponentContext';
17
+ export { useComponentContext, FORM_EMPTY_ARRAY } from './context/useComponentContext';
18
+ export { useProBoundValue } from './context/useProBoundValue';
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
  exports.__esModule = true;
5
- exports.useComponentContext = exports.initializeFormContext = exports.getFormContext = exports.TimePicker = exports.ProTimePicker = exports.ProTextArea = exports.ProTable = exports.ProSelect = exports.ProRadio = exports.ProNextText = exports.ProInput = exports.ProDatePicker = exports.ProCheckbox = exports.ProCascaderSelect = exports.PrintButton = exports.FormProvider = exports.EditProTable = exports.DatePicker = void 0;
5
+ exports.useProBoundValue = exports.useComponentContext = exports.initializeFormContext = exports.getFormContext = exports.TimePicker = exports.ProTimePicker = exports.ProTextArea = exports.ProTable = exports.ProSelect = exports.ProRadio = exports.ProNextText = exports.ProInput = exports.ProDatePicker = exports.ProCheckbox = exports.ProCascaderSelect = exports.PrintButton = exports.FormProvider = exports.FORM_EMPTY_ARRAY = exports.EditProTable = exports.DatePicker = void 0;
6
6
  var _PrintButton = _interopRequireDefault(require("./components/PrintButton"));
7
7
  exports.PrintButton = _PrintButton["default"];
8
8
  var _editProTable = _interopRequireDefault(require("./components/edit-pro-table"));
@@ -35,4 +35,7 @@ exports.getFormContext = _FormProvider.getFormContext;
35
35
  exports.initializeFormContext = _FormProvider.initializeFormContext;
36
36
  exports.FormProvider = _FormProvider.FormProvider;
37
37
  var _useComponentContext = require("./context/useComponentContext");
38
- exports.useComponentContext = _useComponentContext.useComponentContext;
38
+ exports.useComponentContext = _useComponentContext.useComponentContext;
39
+ exports.FORM_EMPTY_ARRAY = _useComponentContext.FORM_EMPTY_ARRAY;
40
+ var _useProBoundValue = require("./context/useProBoundValue");
41
+ exports.useProBoundValue = _useProBoundValue.useProBoundValue;
@@ -101,7 +101,7 @@ function fillRealVersion(meta, packageName, version, basicLibraryVersion) {
101
101
  packageName = '@openli1115/lowcode-edit-pro-table';
102
102
  }
103
103
  if (version === void 0) {
104
- version = '1.0.54';
104
+ version = '1.0.55';
105
105
  }
106
106
  if (basicLibraryVersion === void 0) {
107
107
  basicLibraryVersion = {
@@ -106,7 +106,7 @@ function fillRealVersion(meta, packageName, version, basicLibraryVersion) {
106
106
  packageName = '@openli1115/lowcode-edit-pro-table';
107
107
  }
108
108
  if (version === void 0) {
109
- version = '1.0.54';
109
+ version = '1.0.55';
110
110
  }
111
111
  if (basicLibraryVersion === void 0) {
112
112
  basicLibraryVersion = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openli1115/lowcode-edit-pro-table",
3
- "version": "1.0.54",
3
+ "version": "1.0.55",
4
4
  "description": "@openli1115/lowcode-edit-pro-table",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -100,10 +100,10 @@
100
100
  },
101
101
  "componentConfig": {
102
102
  "isComponentLibrary": true,
103
- "materialSchema": "https://unpkg.com/@openli1115/lowcode-edit-pro-table@1.0.54/build/lowcode/assets-prod.json"
103
+ "materialSchema": "https://unpkg.com/@openli1115/lowcode-edit-pro-table@1.0.55/build/lowcode/assets-prod.json"
104
104
  },
105
105
  "lcMeta": {
106
106
  "type": "component"
107
107
  },
108
- "homepage": "https://unpkg.com/@openli1115/lowcode-edit-pro-table@1.0.54/build/index.html"
108
+ "homepage": "https://unpkg.com/@openli1115/lowcode-edit-pro-table@1.0.55/build/index.html"
109
109
  }